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

#include <Food.h>

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

Public 멤버 함수

 AFood ()
 
void OnOutlineStateChanged (bool bShouldShowOutline)
 
void OnRep_CurrentFoodData ()
 
void SetCityName (FWordInfo InWord)
 
void SetFoodMesh (FWordInfo InWord, UStaticMesh *InMesh)
 
virtual void Tick (float DeltaTime) override
 
void UpdateFoodWidget ()
 Widget에 음식 이름 업데이트
 
void UpdateMesh ()
 음식 메시 업데이트 (DataTable에서 로드)
 

Public 속성

class UWidgetComponent * CityName
 
FFoodCapsuleData CurrentFoodData
 
class UStaticMeshComponent * FoodMesh
 
TObjectPtr< class UInteractableComponent > InteractableComp
 
class UDataTable * ListenDataTable
 
class UStaticMeshComponent * Mesh
 

Protected 멤버 함수

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

상세한 설명

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

생성자 & 소멸자 문서화

◆ AFood()

AFood::AFood ( )

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

15{
16 // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
17 PrimaryActorTick.bCanEverTick = true;
18
19 Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
20 SetRootComponent(Mesh);
21
22 FoodMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("FoodMesh"));
23 FoodMesh->SetupAttachment(GetRootComponent());
24
25 CityName = CreateDefaultSubobject<UWidgetComponent>(TEXT("FoodName"));
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 // 물리 복제 설정
36 Mesh->SetIsReplicated(true);
37
38 // Replication
39 bReplicates = true;
40 SetNetUpdateFrequency(100.0f); // 높은 업데이트 빈도로 부드러운 네트워크 동기화
41 SetMinNetUpdateFrequency(33.0f); // 최소 30fps 업데이트 보장
42
43}
TObjectPtr< class UInteractableComponent > InteractableComp
Definition Food.h:65
class UStaticMeshComponent * Mesh
Definition Food.h:56
class UWidgetComponent * CityName
Definition Food.h:62
class UStaticMeshComponent * FoodMesh
Definition Food.h:59

다음을 참조함 : CityName, FoodMesh, InteractableComp, Mesh.

멤버 함수 문서화

◆ BeginPlay()

void AFood::BeginPlay ( )
overrideprotectedvirtual

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

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

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

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

◆ GetLifetimeReplicatedProps()

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

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

69{
70 Super::GetLifetimeReplicatedProps(OutLifetimeProps);
71
72 // FoodMesh는 Component이므로 자동 복제됨
73 DOREPLIFETIME(AFood, FoodMesh);
74 DOREPLIFETIME(AFood, CurrentFoodData);
75}
Definition Food.h:37
FFoodCapsuleData CurrentFoodData
Definition Food.h:77

다음을 참조함 : CurrentFoodData, FoodMesh.

◆ OnOutlineStateChanged()

void AFood::OnOutlineStateChanged ( bool  bShouldShowOutline)

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

179{
180 if (Mesh)
181 {
182 Mesh->SetRenderCustomDepth(bShouldShowOutline);
183 }
184 if (FoodMesh)
185 {
186 FoodMesh->SetRenderCustomDepth(bShouldShowOutline);
187 }
188}

다음을 참조함 : FoodMesh, Mesh.

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

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

◆ OnRep_CurrentFoodData()

void AFood::OnRep_CurrentFoodData ( )

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

95{
96 UpdateMesh();
98}
void UpdateFoodWidget()
Widget에 음식 이름 업데이트
Definition Food.cpp:100
void UpdateMesh()
음식 메시 업데이트 (DataTable에서 로드)
Definition Food.cpp:123

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

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

◆ SetCityName()

void AFood::SetCityName ( FWordInfo  InWord)

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

85{
86 CurrentFoodData.word1 = InWord;
87 // 서버에서도 Widget 업데이트 (클라이언트는 OnRep_FoodName에서 호출됨)
88 if (HasAuthority())
89 {
91 }
92}
FWordInfo word1
시나리오 단어 정보
Definition Food.h:22

다음을 참조함 : CurrentFoodData, UpdateFoodWidget(), FFoodCapsuleData::word1.

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

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

◆ SetFoodMesh()

void AFood::SetFoodMesh ( FWordInfo  InWord,
UStaticMesh *  InMesh 
)

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

168{
169 CurrentFoodData.word2 = InWord;
170
171 // 서버에서도 UpdateMesh 호출 (클라이언트는 OnRep_CurrentFoodData에서 호출됨)
172 if (HasAuthority())
173 {
174 UpdateMesh();
175 }
176}
FWordInfo word2
Definition Food.h:25

다음을 참조함 : CurrentFoodData, UpdateMesh(), FFoodCapsuleData::word2.

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

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

◆ Tick()

void AFood::Tick ( float  DeltaTime)
overridevirtual

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

79{
80 Super::Tick(DeltaTime);
81
82}

◆ UpdateFoodWidget()

void AFood::UpdateFoodWidget ( )

Widget에 음식 이름 업데이트

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

101{
102 // 게임 스레드가 아니면 게임 스레드로 dispatch
103 if (!IsInGameThread())
104 {
105 AsyncTask(ENamedThreads::GameThread, [this]()
106 {
108 });
109 return;
110 }
111
112 // Widget이 아직 초기화되지 않았을 수 있으므로 체크
113 if (!CityName || !CityName->GetWidget())
114 return;
115
116 UCityNameWidget* NameWidget = Cast<UCityNameWidget>(CityName->GetWidget());
117 if (NameWidget)
118 {
119 NameWidget->SetCityName(FString::Printf(TEXT("%s %s"), *CurrentFoodData.word1.name, *CurrentFoodData.word2.name));
120 }
121}
void SetCityName(FString InCityName)
FString name

다음을 참조함 : CityName, CurrentFoodData, FWordInfo::name, UCityNameWidget::SetCityName(), UpdateFoodWidget(), FFoodCapsuleData::word1, FFoodCapsuleData::word2.

다음에 의해서 참조됨 : AOrderKiosk::BeginSubmitOverlap(), AFoodHolder::OnFoodBoxOverlapBegin(), OnRep_CurrentFoodData(), SetCityName(), UpdateFoodWidget().

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

◆ UpdateMesh()

void AFood::UpdateMesh ( )

음식 메시 업데이트 (DataTable에서 로드)

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

124{
125 // 게임 스레드가 아니면 게임 스레드로 dispatch
126 if (!IsInGameThread())
127 {
128 AsyncTask(ENamedThreads::GameThread, [this]()
129 {
130 UpdateMesh();
131 });
132 return;
133 }
134
135 if (!ListenDataTable)
136 {
137 UE_LOG(LogTemp, Error, TEXT("[AFood::UpdateMesh] ListenDataTable is null!"));
138 return;
139 }
140
141 if (!FoodMesh)
142 {
143 UE_LOG(LogTemp, Error, TEXT("[AFood::UpdateMesh] FoodMesh component is null!"));
144 return;
145 }
146
147 TArray<FListenData*> AllRows;
148 ListenDataTable->GetAllRows<FListenData>(TEXT("UpdateMesh"), AllRows);
149
150 for (FListenData* Row : AllRows)
151 {
152 if (Row && Row->Word == CurrentFoodData.word2.name)
153 {
154 if (Row->FoodPath)
155 {
156 FoodMesh->SetStaticMesh(Row->FoodPath);
157 return;
158 }
159 }
160 }
161
162 // 일치하는 데이터를 찾지 못함
163 UE_LOG(LogTemp, Warning, TEXT("[AFood::UpdateMesh] No matching ListenData found for: %s"),
165}
class UDataTable * ListenDataTable
Definition Food.h:73
듣기 학습 데이터를 정의하는 구조체
Definition FListenData.h:19

다음을 참조함 : CurrentFoodData, FoodMesh, ListenDataTable, FWordInfo::name, UpdateMesh(), FFoodCapsuleData::word1, FFoodCapsuleData::word2.

다음에 의해서 참조됨 : AFoodHolder::OnFoodBoxOverlapBegin(), OnRep_CurrentFoodData(), SetFoodMesh(), UpdateMesh().

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

멤버 데이터 문서화

◆ CityName

class UWidgetComponent* AFood::CityName

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

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

◆ CurrentFoodData

◆ FoodMesh

class UStaticMeshComponent* AFood::FoodMesh

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

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

◆ InteractableComp

TObjectPtr<class UInteractableComponent> AFood::InteractableComp

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

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

◆ ListenDataTable

class UDataTable* AFood::ListenDataTable

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

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

◆ Mesh

class UStaticMeshComponent* AFood::Mesh

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

다음에 의해서 참조됨 : AFood(), BeginPlay(), AFoodHolder::CheckFood(), OnOutlineStateChanged().


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