Space Plunder
Loading...
Searching...
No Matches
UReplayViewer Class Reference

The UI widget for controlling the Replay Clips. More...

#include <ReplayViewer.h>

Inheritance diagram for UReplayViewer:

Public Member Functions

virtual void NativeConstruct () override
 
virtual bool Initialize () override
 
void SetReplayController (AReplaySpectatorController *Controller)
 

Public Attributes

UTextBlock * CurrentTimeText
 
UTextBlock * TotalTimeText
 
USlider * TimeSlider
 
UButton * PauseButton
 
UTextBlock * PauseButtonText
 
UComboBoxString * PlayRateComboBox
 
UButton * RestartButton
 
UButton * RewindButton
 
UButton * MenuButton
 
UButton * BackButton
 

Protected Member Functions

void PauseButtonClicked ()
 
void RestartButtonClicked ()
 
void RewindButtonClicked ()
 
void BackButtonClicked ()
 
void MenuButtonClicked ()
 
void PlaybackSelectionChanged (FString Item, ESelectInfo::Type SelectionType)
 
void OnMouseCaptureSlider ()
 
void OnMouseCaptureEndSlider ()
 
void OnValueChanged (float Value)
 
virtual void NativeTick (const FGeometry &MyGeometry, float InDeltaTime) override
 
FText GetCurrentTimeText () const
 
FText GetTotalTimeText () const
 
FText GetPauseButtonText () const
 
float GetSliderValue () const
 

Protected Attributes

int32 TotalTimeInSeconds = 0
 
int32 CurrentTimeInSeconds = 0
 
class AReplaySpectatorControllerReplayController
 
bool bSliderPickedByUser = false
 
bool bCurrentlyPaused = false
 
float SliderReleasedAtValue = 0.0f
 

Private Member Functions

void GetReplaySpectatorController ()
 

Detailed Description

The UI widget for controlling the Replay Clips.

Member Function Documentation

◆ BackButtonClicked()

void UReplayViewer::BackButtonClicked ( )
protected
90{
91 //@TODO go to menu
92 const UWorld* World = GetWorld();
93 if(!ensure(World != nullptr)) return;
95 if(ReplayController != nullptr)
96 {
97 if(World->GetNetMode() == NM_ListenServer)
98 {
99 AGameModeBase* GameMode = World->GetAuthGameMode<AGameModeBase>();
100 if(GameMode)
101 {
102 GameMode->ReturnToMainMenuHost();
103 }
104 }
105 else
106 {
108 {
109 ReplayController->ClientReturnToMainMenuWithTextReason(FText::FromString("Back to main menu"));
110 }
111 }
112 }
113}
void GetReplaySpectatorController()
Definition ReplayViewer.cpp:234
class AReplaySpectatorController * ReplayController
Definition ReplayViewer.h:97

◆ GetCurrentTimeText()

FText UReplayViewer::GetCurrentTimeText ( ) const
protected
193{
194 const int32 Minutes = CurrentTimeInSeconds / 60;
195 const int32 Seconds = CurrentTimeInSeconds % 60;
196 return FText::Format(NSLOCTEXT("YourNamespace", "TimeFormat", "{0}:{1}"),
197 FText::AsNumber(Minutes),
198 FText::AsNumber(Seconds));
199}
int32 CurrentTimeInSeconds
Definition ReplayViewer.h:92

◆ GetPauseButtonText()

FText UReplayViewer::GetPauseButtonText ( ) const
protected
211{
213 {
214 return FText::FromString("Play");
215 }
216 return FText::FromString("Pause");
217}
bool bCurrentlyPaused
Definition ReplayViewer.h:114

◆ GetReplaySpectatorController()

void UReplayViewer::GetReplaySpectatorController ( )
private
235{
236 if(GetOwningPlayer() != nullptr)
237 {
238 AReplaySpectatorController* ReplayControllerRef = Cast<AReplaySpectatorController>(GetOwningPlayer());
239 if(ReplayControllerRef != nullptr)
240 {
241 ReplayController = ReplayControllerRef;
242 }
243 }
244}
Definition ReplaySpectatorController.h:14

◆ GetSliderValue()

float UReplayViewer::GetSliderValue ( ) const
protected
220{
221 if (TotalTimeInSeconds == 0)
222 {
223 // Handle the zero case,
224 return 0.0f;
225 }
226 const float CurrentTime = CurrentTimeInSeconds / TotalTimeInSeconds;
228 {
230 }
231 return CurrentTime;
232}
int32 TotalTimeInSeconds
Definition ReplayViewer.h:90
float SliderReleasedAtValue
Definition ReplayViewer.h:117
bool bSliderPickedByUser
Definition ReplayViewer.h:112

◆ GetTotalTimeText()

FText UReplayViewer::GetTotalTimeText ( ) const
protected
202{
203 const int32 Minutes = TotalTimeInSeconds / 60;
204 const int32 Seconds = TotalTimeInSeconds % 60;
205 return FText::Format(NSLOCTEXT("YourNamespace", "TimeFormat", "{0}:{1}"),
206 FText::AsNumber(Minutes),
207 FText::AsNumber(Seconds));
208}

◆ Initialize()

bool UReplayViewer::Initialize ( )
overridevirtual
14{
15 const bool bSuccess = Super::Initialize();
16 if (!ensure(CurrentTimeText != nullptr)) return false;
17 if (!ensure(TotalTimeText != nullptr)) return false;
18 if (!ensure(TimeSlider != nullptr)) return false;
19 if (!ensure(PauseButton != nullptr)) return false;
20 if (!ensure(PlayRateComboBox != nullptr)) return false;
21 if (!ensure(PauseButtonText != nullptr)) return false;
22 if (!ensure(RestartButton != nullptr)) return false;
23 if (!ensure(RewindButton != nullptr)) return false;
24 if (!ensure(BackButton != nullptr)) return false;
25 if (!ensure(MenuButton != nullptr)) return false;
26
27
28
29 PauseButton->OnClicked.AddUniqueDynamic(this, &UReplayViewer::PauseButtonClicked);
30 RestartButton->OnClicked.AddUniqueDynamic(this, &UReplayViewer::RestartButtonClicked);
31 RewindButton->OnClicked.AddUniqueDynamic(this, &UReplayViewer::RewindButtonClicked);
32 PlayRateComboBox->OnSelectionChanged.AddUniqueDynamic(this, &UReplayViewer::PlaybackSelectionChanged);
33
34 BackButton->OnClicked.AddUniqueDynamic(this, &UReplayViewer::BackButtonClicked);
35 MenuButton->OnClicked.AddUniqueDynamic(this, &UReplayViewer::MenuButtonClicked);
36
37 TimeSlider->OnValueChanged.AddUniqueDynamic(this, &UReplayViewer::OnValueChanged);
38 TimeSlider->OnMouseCaptureBegin.AddUniqueDynamic(this, &UReplayViewer::OnMouseCaptureSlider);
39 TimeSlider->OnControllerCaptureBegin.AddUniqueDynamic(this, &UReplayViewer::OnMouseCaptureSlider);
40 TimeSlider->OnMouseCaptureEnd.AddUniqueDynamic(this, &UReplayViewer::OnMouseCaptureEndSlider);
41 TimeSlider->OnControllerCaptureEnd.AddUniqueDynamic(this, &UReplayViewer::OnMouseCaptureEndSlider);
42
43 if(!bSuccess) return false;
44 return true;
45}
void OnMouseCaptureEndSlider()
Definition ReplayViewer.cpp:165
USlider * TimeSlider
Definition ReplayViewer.h:37
UTextBlock * PauseButtonText
Definition ReplayViewer.h:42
void PauseButtonClicked()
Definition ReplayViewer.cpp:61
UTextBlock * CurrentTimeText
Definition ReplayViewer.h:32
UButton * RewindButton
Definition ReplayViewer.h:49
UTextBlock * TotalTimeText
Definition ReplayViewer.h:34
void RestartButtonClicked()
Definition ReplayViewer.cpp:70
UButton * RestartButton
Definition ReplayViewer.h:47
void OnValueChanged(float Value)
Definition ReplayViewer.cpp:176
void MenuButtonClicked()
Definition ReplayViewer.cpp:115
UButton * BackButton
Definition ReplayViewer.h:55
void BackButtonClicked()
Definition ReplayViewer.cpp:89
UButton * MenuButton
Definition ReplayViewer.h:52
void PlaybackSelectionChanged(FString Item, ESelectInfo::Type SelectionType)
Definition ReplayViewer.cpp:124
UComboBoxString * PlayRateComboBox
Definition ReplayViewer.h:44
UButton * PauseButton
Definition ReplayViewer.h:40
void RewindButtonClicked()
Definition ReplayViewer.cpp:80
void OnMouseCaptureSlider()
Definition ReplayViewer.cpp:160

◆ MenuButtonClicked()

void UReplayViewer::MenuButtonClicked ( )
protected
116{
118 if(ReplayController != nullptr)
119 {
121 }
122}
void OpenReplayMenu()
Definition ReplaySpectatorController.cpp:140

◆ NativeConstruct()

void UReplayViewer::NativeConstruct ( )
overridevirtual
48{
49 Super::NativeConstruct();
51 if(ReplayController != nullptr)
52 {
54 // if(TimeSlider != nullptr)
55 // {
56 // TimeSlider->SetMaxValue(TotalTimeInSeconds);
57 // }
58 }
59}
int32 GetCurrentReplayTotalTimeInSeconds() const
** Gets the Max Number of Seconds that were recorded in the current Replay *‍/
Definition ReplaySpectatorController.cpp:97

◆ NativeTick()

void UReplayViewer::NativeTick ( const FGeometry & MyGeometry,
float InDeltaTime )
overrideprotectedvirtual
182{
183 Super::NativeTick(MyGeometry, InDeltaTime);
185 else
186 {
188 }
189
190}
int32 GetCurrentReplayCurrentTimeInSeconds() const
** Gets the Second we are currently watching in the Replay *‍/
Definition ReplaySpectatorController.cpp:106

◆ OnMouseCaptureEndSlider()

void UReplayViewer::OnMouseCaptureEndSlider ( )
protected
166{
168 if(ReplayController != nullptr)
169 {
170 const int32 Seconds = FMath::RoundToInt(TotalTimeInSeconds * SliderReleasedAtValue);
172 }
173 bSliderPickedByUser = false;
174}
void SetCurrentReplayTimeToSeconds(const int32 Seconds) const
** Jumps to the specified Second in the Replay we are watching *‍/
Definition ReplaySpectatorController.cpp:115

◆ OnMouseCaptureSlider()

void UReplayViewer::OnMouseCaptureSlider ( )
protected
161{
162 bSliderPickedByUser = true;
163}

◆ OnValueChanged()

void UReplayViewer::OnValueChanged ( float Value)
protected
177{
178 SliderReleasedAtValue = Value;
179}

◆ PauseButtonClicked()

void UReplayViewer::PauseButtonClicked ( )
protected
62{
64 if(ReplayController != nullptr)
65 {
67 }
68}
bool SetCurrentReplayPausedState(const bool bPause)
Definition ReplaySpectatorController.cpp:42

◆ PlaybackSelectionChanged()

void UReplayViewer::PlaybackSelectionChanged ( FString Item,
ESelectInfo::Type SelectionType )
protected
125{
127 if(ReplayController != nullptr)
128 {
129 if(Item == "1/8x")
130 {
132 }
133 if(Item == "1/4x")
134 {
136 }
137 if(Item == "1/2x")
138 {
140 }
141 if(Item == "2x")
142 {
144 }
145 if(Item == "4x")
146 {
148 }
149 if(Item == "8x")
150 {
152 }
153 if(Item == "1x")
154 {
156 }
157 }
158}
void SetCurrentReplayPlayRate(const float PlayRate=1.f) const
** Changes the PlayRate of the Replay we are watching, enabling FastForward or SlowMotion *‍/
Definition ReplaySpectatorController.cpp:123

◆ RestartButtonClicked()

void UReplayViewer::RestartButtonClicked ( )
protected
71{
73 if(ReplayController != nullptr)
74 {
76 bCurrentlyPaused = false;
77 }
78}
void RestartReplay()
Definition ReplaySpectatorController.cpp:80

◆ RewindButtonClicked()

void UReplayViewer::RewindButtonClicked ( )
protected
81{
83 if(ReplayController != nullptr)
84 {
86 }
87}
void RewindReplay()
Definition ReplaySpectatorController.cpp:88

◆ SetReplayController()

void UReplayViewer::SetReplayController ( AReplaySpectatorController * Controller)
inline
59{ReplayController = Controller;};

Member Data Documentation

◆ BackButton

UButton* UReplayViewer::BackButton

◆ bCurrentlyPaused

bool UReplayViewer::bCurrentlyPaused = false
protected

◆ bSliderPickedByUser

bool UReplayViewer::bSliderPickedByUser = false
protected

◆ CurrentTimeInSeconds

int32 UReplayViewer::CurrentTimeInSeconds = 0
protected

◆ CurrentTimeText

UTextBlock* UReplayViewer::CurrentTimeText

◆ MenuButton

UButton* UReplayViewer::MenuButton

◆ PauseButton

UButton* UReplayViewer::PauseButton

◆ PauseButtonText

UTextBlock* UReplayViewer::PauseButtonText

◆ PlayRateComboBox

UComboBoxString* UReplayViewer::PlayRateComboBox

◆ ReplayController

class AReplaySpectatorController* UReplayViewer::ReplayController
protected

◆ RestartButton

UButton* UReplayViewer::RestartButton

◆ RewindButton

UButton* UReplayViewer::RewindButton

◆ SliderReleasedAtValue

float UReplayViewer::SliderReleasedAtValue = 0.0f
protected

◆ TimeSlider

USlider* UReplayViewer::TimeSlider

◆ TotalTimeInSeconds

int32 UReplayViewer::TotalTimeInSeconds = 0
protected

◆ TotalTimeText

UTextBlock* UReplayViewer::TotalTimeText

The documentation for this class was generated from the following files: