KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
AListenAnswer 클래스 참조

#include <ListenAnswer.h>

+ AListenAnswer에 대한 상속 다이어그램 :
+ AListenAnswer에 대한 협력 다이어그램:

Public 멤버 함수

 AListenAnswer ()
 
void OnOutlineStateChanged (bool bShouldShowOutline)
 
void OnRep_AnswerData ()
 
void SetSpawnData (const FListenAnswerData &InData)
 
virtual void Tick (float DeltaTime) override
 
void UpdateMesh ()
 
void UpdateNameWidget ()
 

Public 속성

FListenAnswerData AnswerData
 
TObjectPtr< class UHookComponent > HookComp
 
TObjectPtr< class UInteractableComponent > InteractableComp
 
class UDataTable * ListenDataTable
 
class UStaticMeshComponent * Mesh
 
class UWidgetComponent * NameWidgetComp
 

Protected 멤버 함수

virtual void BeginPlay () override
 
virtual void GetLifetimeReplicatedProps (TArray< class FLifetimeProperty > &OutLifetimeProps) const override
 

상세한 설명

ListenAnswer.h 파일의 35 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ AListenAnswer()

AListenAnswer::AListenAnswer ( )

ListenAnswer.cpp 파일의 16 번째 라인에서 정의되었습니다.

17{
18 // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
19 PrimaryActorTick.bCanEverTick = true;
20
21 Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
22 SetRootComponent(Mesh);
23
24 NameWidgetComp = CreateDefaultSubobject<UWidgetComponent>(TEXT("NameWidget"));
25 NameWidgetComp->SetupAttachment(GetRootComponent());
26
27 InteractableComp = CreateDefaultSubobject<UInteractableComponent>(TEXT("Interactable"));
28 InteractableComp->InteractionType = EInteractionType::PickUp;
29 InteractableComp->InteractionPrompt = TEXT("Pick Up");
30
31 // Initial settings (Physics 설정은 BeginPlay에서 수행)
32 Mesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
33 Mesh->SetCollisionProfileName(TEXT("PhysicsActor"));
34
35 HookComp = CreateDefaultSubobject<UHookComponent>(TEXT("Hook"));
36
37 // 물리 복제 설정
38 Mesh->SetIsReplicated(true);
39
40 // Replication
41 bReplicates = true;
42 SetNetUpdateFrequency(100.0f); // 높은 업데이트 빈도로 부드러운 네트워크 동기화
43 SetMinNetUpdateFrequency(33.0f); // 최소 30fps 업데이트 보장
44}
class UStaticMeshComponent * Mesh
TObjectPtr< class UHookComponent > HookComp
class UWidgetComponent * NameWidgetComp
TObjectPtr< class UInteractableComponent > InteractableComp

다음을 참조함 : HookComp, InteractableComp, Mesh, NameWidgetComp.

멤버 함수 문서화

◆ BeginPlay()

void AListenAnswer::BeginPlay ( )
overrideprotectedvirtual

ListenAnswer.cpp 파일의 47 번째 라인에서 정의되었습니다.

48{
49 Super::BeginPlay();
50
51 // Physics 설정 (생성자에서 이동)
52 if (Mesh)
53 {
54 Mesh->SetSimulatePhysics(true);
55 Mesh->SetEnableGravity(true);
56 Mesh->SetMassOverrideInKg(NAME_None, 50.f, true);
57 }
58
59 NameWidgetComp->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);
60 NameWidgetComp->SetRelativeLocation(FVector(0, 0, 10));
61
62 // 델리게이트 바인딩
64 {
65 InteractableComp->OnOutlineStateChanged.AddDynamic(this, &AListenAnswer::OnOutlineStateChanged);
66 }
67}
void OnOutlineStateChanged(bool bShouldShowOutline)

다음을 참조함 : InteractableComp, Mesh, NameWidgetComp, OnOutlineStateChanged().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetLifetimeReplicatedProps()

void AListenAnswer::GetLifetimeReplicatedProps ( TArray< class FLifetimeProperty > &  OutLifetimeProps) const
overrideprotectedvirtual

ListenAnswer.cpp 파일의 69 번째 라인에서 정의되었습니다.

70{
71 Super::GetLifetimeReplicatedProps(OutLifetimeProps);
72
73 DOREPLIFETIME(AListenAnswer, AnswerData);
74}
FListenAnswerData AnswerData

다음을 참조함 : AnswerData.

◆ OnOutlineStateChanged()

void AListenAnswer::OnOutlineStateChanged ( bool  bShouldShowOutline)

ListenAnswer.cpp 파일의 150 번째 라인에서 정의되었습니다.

151{
152 if (Mesh)
153 {
154 Mesh->SetRenderCustomDepth(bShouldShowOutline);
155 }
156}

다음을 참조함 : Mesh.

다음에 의해서 참조됨 : BeginPlay().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnRep_AnswerData()

void AListenAnswer::OnRep_AnswerData ( )

ListenAnswer.cpp 파일의 82 번째 라인에서 정의되었습니다.

83{
84 UpdateMesh();
86}
void UpdateNameWidget()

다음을 참조함 : UpdateMesh(), UpdateNameWidget().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetSpawnData()

void AListenAnswer::SetSpawnData ( const FListenAnswerData InData)
inline

ListenAnswer.h 파일의 80 번째 라인에서 정의되었습니다.

80{ AnswerData = InData; }

◆ Tick()

void AListenAnswer::Tick ( float  DeltaTime)
overridevirtual

ListenAnswer.cpp 파일의 77 번째 라인에서 정의되었습니다.

78{
79 Super::Tick(DeltaTime);
80}

◆ UpdateMesh()

void AListenAnswer::UpdateMesh ( )

ListenAnswer.cpp 파일의 88 번째 라인에서 정의되었습니다.

89{
90 // 게임 스레드가 아니면 게임 스레드로 dispatch
91 if (!IsInGameThread())
92 {
93 AsyncTask(ENamedThreads::GameThread, [this]()
94 {
95 UpdateMesh();
96 });
97 return;
98 }
99
100 if (!ListenDataTable)
101 {
102 UE_LOG(LogTemp, Error, TEXT("ListenDataTable is null!"));
103 return;
104 }
105
106 if (!ListenDataTable) return;
107
108 TArray<FListenData*> AllRows;
109 ListenDataTable->GetAllRows<FListenData>(TEXT("UpdateMesh"), AllRows);
110
111 for (FListenData* Row : AllRows)
112 {
113 if (Row && Row->Word == AnswerData.word1.name)
114 {
115 if (Row->FoodPath)
116 {
117 Mesh->SetStaticMesh(Row->FoodPath);
118 return;
119 }
120 }
121 }
122
123 // 일치하는 데이터를 찾지 못함
124 UE_LOG(LogTemp, Warning, TEXT("No matching ListenData found for: %s"), *AnswerData.word1.name);
125}
class UDataTable * ListenDataTable
FWordInfo word1
시나리오 단어 정보
듣기 학습 데이터를 정의하는 구조체
Definition FListenData.h:19
FString name

다음을 참조함 : AnswerData, ListenDataTable, Mesh, FWordInfo::name, UpdateMesh(), FListenAnswerData::word1.

다음에 의해서 참조됨 : OnRep_AnswerData(), AFoodCourtManager::SpawnListenAnswer(), UpdateMesh().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateNameWidget()

void AListenAnswer::UpdateNameWidget ( )

ListenAnswer.cpp 파일의 127 번째 라인에서 정의되었습니다.

128{
129 // 게임 스레드가 아니면 게임 스레드로 dispatch
130 if (!IsInGameThread())
131 {
132 AsyncTask(ENamedThreads::GameThread, [this]()
133 {
135 });
136 return;
137 }
138
139 // Widget이 아직 초기화되지 않았을 수 있으므로 체크
140 if (!NameWidgetComp || !NameWidgetComp->GetWidget())
141 return;
142
143 UCityNameWidget* NameWidget = Cast<UCityNameWidget>(NameWidgetComp->GetWidget());
144 if (NameWidget)
145 {
146 NameWidget->SetCityName(AnswerData.word1.name);
147 }
148}
void SetCityName(FString InCityName)

다음을 참조함 : AnswerData, FWordInfo::name, NameWidgetComp, UCityNameWidget::SetCityName(), UpdateNameWidget(), FListenAnswerData::word1.

다음에 의해서 참조됨 : OnRep_AnswerData(), AFoodCourtManager::SpawnListenAnswer(), UpdateNameWidget().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ AnswerData

FListenAnswerData AListenAnswer::AnswerData

ListenAnswer.h 파일의 75 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetLifetimeReplicatedProps(), AFoodCourtManager::SpawnListenAnswer(), UpdateMesh(), UpdateNameWidget().

◆ HookComp

TObjectPtr<class UHookComponent> AListenAnswer::HookComp

ListenAnswer.h 파일의 64 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AListenAnswer().

◆ InteractableComp

TObjectPtr<class UInteractableComponent> AListenAnswer::InteractableComp

ListenAnswer.h 파일의 61 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AListenAnswer(), BeginPlay().

◆ ListenDataTable

class UDataTable* AListenAnswer::ListenDataTable

ListenAnswer.h 파일의 72 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : UpdateMesh().

◆ Mesh

class UStaticMeshComponent* AListenAnswer::Mesh

ListenAnswer.h 파일의 55 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AListenAnswer(), BeginPlay(), OnOutlineStateChanged(), UpdateMesh().

◆ NameWidgetComp

class UWidgetComponent* AListenAnswer::NameWidgetComp

ListenAnswer.h 파일의 58 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AListenAnswer(), BeginPlay(), UpdateNameWidget().


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