Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UScenarioCutsceneWidget 클래스 참조

#include <ScenarioCutsceneWidget.h>

UScenarioCutsceneWidget에 대한 상속 다이어그램 :
Inheritance graph
UScenarioCutsceneWidget에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 UScenarioCutsceneWidget (const FObjectInitializer &ObjectInitializer)
 
virtual void NativeConstruct () override
 
virtual void NativeTick (const FGeometry &MyGeometry, float InDeltaTime) override
 
virtual FReply NativeOnKeyDown (const FGeometry &InGeometry, const FKeyEvent &InKeyEvent) override
 
virtual FReply NativeOnMouseButtonDown (const FGeometry &InGeometry, const FPointerEvent &InMouseEvent) override
 
void StartCutscene (const TArray< FDT_ScenarioCutsceneTable > &InCutsceneRows)
 
void AdvanceCutscene ()
 
void SkipCutscene ()
 
void ConfigureTypewriter (bool bInUseTypewriter, float InCharactersPerSecond)
 
bool IsCutsceneFinished () const
 
EScenarioCutsceneState GetCutsceneState () const
 
- UUserWidgetBase(으)로부터 상속된 Public 멤버 함수
virtual void SetAbilitySystemComponent (AActor *InOwner)
 
virtual UAbilitySystemComponent * GetAbilitySystemComponent () const override
 
virtual void OnPushedToLayer ()
 
virtual void OnPoppedFromLayer ()
 
virtual void OnActivated ()
 
virtual void OnDeactivated ()
 
void Activate ()
 
void Deactivate ()
 
FORCEINLINE FGameplayTag GetLayerTag () const
 
FORCEINLINE void SetLayerTag (const FGameplayTag InTag)
 
FORCEINLINE bool IsPrimary () const
 
FORCEINLINE void SetPrimary (const bool InPrimary)
 
FORCEINLINE EWidgetState GetWidgetState () const
 
FORCEINLINE void SetWidgetState (const EWidgetState InState)
 
FORCEINLINE UWaitForWidgetActivationGetActivationHandle ()
 
FORCEINLINE bool HasAppearanceAnim () const
 
FORCEINLINE bool HasDisappearanceAnim () const
 

Protected 멤버 함수

void OnCutsceneStarted ()
 
void OnCutsceneLineChanged (const FDT_ScenarioCutsceneTable &CutsceneRow, const FText &SpeakerNameText, const FText &DialogTextValue, const FText &CutscenePathText)
 
void OnCutsceneDialogTextChanged (const FText &DialogTextValue)
 
void OnCutsceneWaitingInput ()
 
void OnCutsceneFinished ()
 
- UUserWidgetBase(으)로부터 상속된 Protected 멤버 함수
virtual void OnWidgetActivated ()
 
virtual void OnWidgetDeactivated ()
 
void OnPushedToLayer_Internal ()
 
void OnPoppedFromLayer_Internal ()
 
void OnActivated_Internal ()
 
void OnDeactivated_Internal ()
 

Protected 속성

TObjectPtr< UWidget > DialogBox
 
TObjectPtr< UImage > CutsceneImage
 
TObjectPtr< UTextBlock > SpeakerName
 
TObjectPtr< UTextBlock > DialogText
 
EScenarioCutsceneState CutsceneState = EScenarioCutsceneState::None
 
- UUserWidgetBase(으)로부터 상속된 Protected 속성
EWidgetState WidgetState
 
TObjectPtr< UAbilitySystemComponent > ASC
 
FGameplayTag LayerTag
 
bool bPrimary = false
 
TObjectPtr< UWidgetAnimation > AppearanceAnim
 
TObjectPtr< UWidgetAnimation > DisappearanceAnim
 

Private 멤버 함수

void ApplyCutsceneLine (const FText &SpeakerNameText, const FText &DialogTextValue, const FText &CutscenePathText)
 
void SetCutsceneImageInternal (const FText &CutscenePathText)
 
void SetDialogTextInternal (const FText &DialogTextValue)
 
bool IsAdvanceInputKey (const FKey &Key) const
 
void FinishTypingCurrentLine ()
 
void ShowCurrentLine ()
 
void FinishCutscene ()
 

Private 속성

TArray< FDT_ScenarioCutsceneTableCutsceneRows
 
int32 CurrentRowIndex = INDEX_NONE
 
FString CurrentDialogString
 
bool bUseTypewriter = false
 
float CharactersPerSecond = 40.0f
 
float TypingProgress = 0.0f
 

생성자 & 소멸자 문서화

◆ UScenarioCutsceneWidget()

UScenarioCutsceneWidget::UScenarioCutsceneWidget ( const FObjectInitializer &  ObjectInitializer)
14 : Super(ObjectInitializer)
15{
16 SetIsFocusable(true);
17}

멤버 함수 문서화

◆ AdvanceCutscene()

void UScenarioCutsceneWidget::AdvanceCutscene ( )
111{
113 {
114 if (CutsceneRows.IsValidIndex(++CurrentRowIndex))
115 {
117 }
118 else
119 {
121 }
122 }
124 {
126 }
128 {
129 //
130 }
131}
void ShowCurrentLine()
Definition ScenarioCutsceneWidget.cpp:205
void FinishCutscene()
Definition ScenarioCutsceneWidget.cpp:256
EScenarioCutsceneState CutsceneState
Definition ScenarioCutsceneWidget.h:100
void FinishTypingCurrentLine()
Definition ScenarioCutsceneWidget.cpp:240
TArray< FDT_ScenarioCutsceneTable > CutsceneRows
Definition ScenarioCutsceneWidget.h:103
int32 CurrentRowIndex
Definition ScenarioCutsceneWidget.h:104
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCutsceneLine()

void UScenarioCutsceneWidget::ApplyCutsceneLine ( const FText &  SpeakerNameText,
const FText &  DialogTextValue,
const FText &  CutscenePathText 
)
private
135{
136 if (IsValid(DialogBox))
137 {
138 DialogBox->SetVisibility(ESlateVisibility::Visible);
139 }
140 else
141 {
142 LOG_ERROR(LogCK, "%s 바인딩이 없습니다.", NAMEOF_VAR(DialogBox));
143 }
144
145 if (IsValid(SpeakerName))
146 {
147 SpeakerName->SetText(SpeakerNameText);
148 SpeakerName->SetJustification(ETextJustify::Center);
149 }
150 else
151 {
152 LOG_ERROR(LogCK, "%s 바인딩이 없습니다.", NAMEOF_VAR(SpeakerName));
153 }
154
155 SetDialogTextInternal(DialogTextValue);
156 SetCutsceneImageInternal(CutscenePathText);
157}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF_VAR(Expr)
Definition CK_UE.h:34
void SetDialogTextInternal(const FText &DialogTextValue)
Definition ScenarioCutsceneWidget.cpp:160
TObjectPtr< UWidget > DialogBox
Definition ScenarioCutsceneWidget.h:88
TObjectPtr< UTextBlock > SpeakerName
Definition ScenarioCutsceneWidget.h:94
void SetCutsceneImageInternal(const FText &CutscenePathText)
Definition ScenarioCutsceneWidget.cpp:174
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ConfigureTypewriter()

FORCEINLINE void UScenarioCutsceneWidget::ConfigureTypewriter ( bool  bInUseTypewriter,
float  InCharactersPerSecond 
)
120{
121 bUseTypewriter = bInUseTypewriter;
122 CharactersPerSecond = FMath::Max(InCharactersPerSecond, 1.0f);
123}
bool bUseTypewriter
Definition ScenarioCutsceneWidget.h:107
float CharactersPerSecond
Definition ScenarioCutsceneWidget.h:108

◆ FinishCutscene()

void UScenarioCutsceneWidget::FinishCutscene ( )
private
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FinishTypingCurrentLine()

void UScenarioCutsceneWidget::FinishTypingCurrentLine ( )
private
241{
243 {
244 return;
245 }
246
248 TypingProgress = static_cast<float>(CurrentDialogString.Len());
249 const FText FullDialogText = FText::FromString(CurrentDialogString);
250 SetDialogTextInternal(FullDialogText);
251 OnCutsceneDialogTextChanged(FullDialogText);
253}
FString CurrentDialogString
Definition ScenarioCutsceneWidget.h:105
float TypingProgress
Definition ScenarioCutsceneWidget.h:109
void OnCutsceneDialogTextChanged(const FText &DialogTextValue)
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCutsceneState()

FORCEINLINE EScenarioCutsceneState UScenarioCutsceneWidget::GetCutsceneState ( ) const
133{
134 return CutsceneState;
135}

◆ IsAdvanceInputKey()

FORCEINLINE bool UScenarioCutsceneWidget::IsAdvanceInputKey ( const FKey &  Key) const
private
139{
140 return Key == EKeys::SpaceBar;
141}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsCutsceneFinished()

FORCEINLINE bool UScenarioCutsceneWidget::IsCutsceneFinished ( ) const

◆ NativeConstruct()

void UScenarioCutsceneWidget::NativeConstruct ( )
overridevirtual
21{
22 Super::NativeConstruct();
24}

◆ NativeOnKeyDown()

FReply UScenarioCutsceneWidget::NativeOnKeyDown ( const FGeometry &  InGeometry,
const FKeyEvent &  InKeyEvent 
)
overridevirtual
60{
61 if (IsAdvanceInputKey(InKeyEvent.GetKey()))
62 {
64 return FReply::Handled();
65 }
66 else
67 {
68 return Super::NativeOnKeyDown(InGeometry, InKeyEvent);
69 }
70}
void AdvanceCutscene()
Definition ScenarioCutsceneWidget.cpp:110
bool IsAdvanceInputKey(const FKey &Key) const
Definition ScenarioCutsceneWidget.h:138
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ NativeOnMouseButtonDown()

FReply UScenarioCutsceneWidget::NativeOnMouseButtonDown ( const FGeometry &  InGeometry,
const FPointerEvent &  InMouseEvent 
)
overridevirtual
74{
75 if (InMouseEvent.GetEffectingButton() == EKeys::LeftMouseButton)
76 {
78 return FReply::Handled();
79 }
80 else
81 {
82 return Super::NativeOnMouseButtonDown(InGeometry, InMouseEvent);
83 }
84}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ NativeTick()

void UScenarioCutsceneWidget::NativeTick ( const FGeometry &  MyGeometry,
float  InDeltaTime 
)
overridevirtual
28{
29 Super::NativeTick(MyGeometry, InDeltaTime);
30
32 {
33 return;
34 }
35
36 if (CurrentDialogString.IsEmpty())
37 {
39 return;
40 }
41
42 TypingProgress += InDeltaTime * CharactersPerSecond;
43
44 const int32 VisibleCharacterCount = FMath::Clamp(FMath::FloorToInt(TypingProgress), 0, CurrentDialogString.Len());
45 const FText VisibleDialogText = FText::FromString(CurrentDialogString.Left(VisibleCharacterCount));
46
47 SetDialogTextInternal(VisibleDialogText);
48 OnCutsceneDialogTextChanged(VisibleDialogText);
49
50 if (VisibleCharacterCount < CurrentDialogString.Len())
51 {
52 return;
53 }
54
56}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnCutsceneDialogTextChanged()

void UScenarioCutsceneWidget::OnCutsceneDialogTextChanged ( const FText &  DialogTextValue)
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnCutsceneFinished()

void UScenarioCutsceneWidget::OnCutsceneFinished ( )
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnCutsceneLineChanged()

void UScenarioCutsceneWidget::OnCutsceneLineChanged ( const FDT_ScenarioCutsceneTable CutsceneRow,
const FText &  SpeakerNameText,
const FText &  DialogTextValue,
const FText &  CutscenePathText 
)
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnCutsceneStarted()

void UScenarioCutsceneWidget::OnCutsceneStarted ( )
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnCutsceneWaitingInput()

void UScenarioCutsceneWidget::OnCutsceneWaitingInput ( )
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetCutsceneImageInternal()

void UScenarioCutsceneWidget::SetCutsceneImageInternal ( const FText &  CutscenePathText)
private
175{
176 if (IsValid(CutsceneImage) == false)
177 {
178 LOG_ERROR(LogCK, "%s 바인딩이 없습니다.", NAMEOF_VAR(CutsceneImage));
179 return;
180 }
181
182 const FString CutscenePath = CutscenePathText.ToString();
183
184 if (CutscenePath.IsEmpty())
185 {
186 CutsceneImage->SetVisibility(ESlateVisibility::Collapsed);
187 return;
188 }
189
190 UTexture2D* CutsceneTexture = LoadObject<UTexture2D>(nullptr, *CutscenePath);
191
192 if (IsValid(CutsceneTexture))
193 {
194 CutsceneImage->SetBrushFromTexture(CutsceneTexture);
195 CutsceneImage->SetVisibility(ESlateVisibility::Visible);
196 }
197 else
198 {
199 CutsceneImage->SetVisibility(ESlateVisibility::Collapsed);
200 LOG_WARNING(LogCK, "Cutscene texture 로드 실패: %s", *CutscenePath);
201 }
202}
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
TObjectPtr< UImage > CutsceneImage
Definition ScenarioCutsceneWidget.h:91
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetDialogTextInternal()

void UScenarioCutsceneWidget::SetDialogTextInternal ( const FText &  DialogTextValue)
private
161{
162 if (IsValid(DialogText))
163 {
164 DialogText->SetText(DialogTextValue);
165 DialogText->SetJustification(ETextJustify::Center);
166 }
167 else
168 {
169 LOG_ERROR(LogCK, "%s 바인딩이 없습니다.", NAMEOF_VAR(DialogText));
170 }
171}
TObjectPtr< UTextBlock > DialogText
Definition ScenarioCutsceneWidget.h:97
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ShowCurrentLine()

void UScenarioCutsceneWidget::ShowCurrentLine ( )
private
206{
207 if (CutsceneRows.IsValidIndex(CurrentRowIndex) == false)
208 {
210 return;
211 }
212
214 const FText SpeakerNameText = FText::FromName(CurrentRow.Character_Name);
215 const FText FullDialogText = FText::FromName(CurrentRow.Cutscene_Dialog);
216
217 CurrentDialogString = FullDialogText.ToString();
218 TypingProgress = 0.0f;
219
220 if (bUseTypewriter)
221 {
223 ApplyCutsceneLine(SpeakerNameText, FText::GetEmpty(), CurrentRow.Cutscene_Path);
224 OnCutsceneLineChanged(CurrentRow, SpeakerNameText, FText::GetEmpty(), CurrentRow.Cutscene_Path);
225 SetDialogTextInternal(FText::GetEmpty());
226 OnCutsceneDialogTextChanged(FText::GetEmpty());
227 }
228 else
229 {
231 ApplyCutsceneLine(SpeakerNameText, FullDialogText, CurrentRow.Cutscene_Path);
232 OnCutsceneLineChanged(CurrentRow, SpeakerNameText, FullDialogText, CurrentRow.Cutscene_Path);
233 SetDialogTextInternal(FullDialogText);
234 OnCutsceneDialogTextChanged(FullDialogText);
236 }
237}
void ApplyCutsceneLine(const FText &SpeakerNameText, const FText &DialogTextValue, const FText &CutscenePathText)
Definition ScenarioCutsceneWidget.cpp:134
void OnCutsceneLineChanged(const FDT_ScenarioCutsceneTable &CutsceneRow, const FText &SpeakerNameText, const FText &DialogTextValue, const FText &CutscenePathText)
Definition DT_ScenarioCutsceneTable.h:10
FText Cutscene_Path
Definition DT_ScenarioCutsceneTable.h:41
FName Cutscene_Dialog
Definition DT_ScenarioCutsceneTable.h:38
FName Character_Name
Definition DT_ScenarioCutsceneTable.h:35
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SkipCutscene()

FORCEINLINE void UScenarioCutsceneWidget::SkipCutscene ( )
114{
116}

◆ StartCutscene()

void UScenarioCutsceneWidget::StartCutscene ( const TArray< FDT_ScenarioCutsceneTable > &  InCutsceneRows)
88{
90 CutsceneRows = InCutsceneRows;
91 CurrentRowIndex = INDEX_NONE;
92 TypingProgress = 0.0f;
93 CurrentDialogString.Empty();
94
96 SetKeyboardFocus();
97
98 if (CutsceneRows.IsEmpty())
99 {
101 }
102 else
103 {
104 CurrentRowIndex = 0;
106 }
107}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ bUseTypewriter

bool UScenarioCutsceneWidget::bUseTypewriter = false
private

◆ CharactersPerSecond

float UScenarioCutsceneWidget::CharactersPerSecond = 40.0f
private

◆ CurrentDialogString

FString UScenarioCutsceneWidget::CurrentDialogString
private

◆ CurrentRowIndex

int32 UScenarioCutsceneWidget::CurrentRowIndex = INDEX_NONE
private

◆ CutsceneImage

TObjectPtr<UImage> UScenarioCutsceneWidget::CutsceneImage
protected

◆ CutsceneRows

TArray<FDT_ScenarioCutsceneTable> UScenarioCutsceneWidget::CutsceneRows
private

◆ CutsceneState

EScenarioCutsceneState UScenarioCutsceneWidget::CutsceneState = EScenarioCutsceneState::None
protected

◆ DialogBox

TObjectPtr<UWidget> UScenarioCutsceneWidget::DialogBox
protected

◆ DialogText

TObjectPtr<UTextBlock> UScenarioCutsceneWidget::DialogText
protected

◆ SpeakerName

TObjectPtr<UTextBlock> UScenarioCutsceneWidget::SpeakerName
protected

◆ TypingProgress

float UScenarioCutsceneWidget::TypingProgress = 0.0f
private

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: