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

#include <AWeightSwitch.h>

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

Public 멤버 함수

 AWeightSwitch ()
 
void InitSwitch ()
 
void OnActivate (const bool State)
 
virtual void OnActivate_Implementation (const bool State)
 
void SetActivate (bool State)
 
virtual void Tick (float DeltaTime) override
 

Public 속성

FLinearColor ActivateColor = FLinearColor::Blue
 
TObjectPtr< class UTweenAnimInstanceAnimBlueprint
 
int ButtonIndex = 0
 
FLinearColor DeactivateColor = FLinearColor::Yellow
 
float Duration = 0.25f
 
TObjectPtr< class UMaterialInstanceDynamic > EmissiveMaterial
 
FName EmissiveParam = "EmissiveColor"
 
bool IsPlayerDetect = false
 
TArray< class AActor * > OverlappingActors
 
TObjectPtr< class USkeletalMeshComponent > SwitchBody
 
TObjectPtr< class UBoxComponent > SwitchCollision
 
float TriggerDelay = 0.25f
 

Protected 멤버 함수

virtual void BeginPlay () override
 

Private 멤버 함수

bool ActivateTrigger ()
 
void Multicast_ShowResultPopup (int32 CorrectAnswerIndex)
 [Multicast RPC] 모든 클라이언트에 정답 결과 팝업 표시
 
void Multicast_ShowWrongPopup (const FString &LuggageColor, const FString &LuggagePattern)
 [Multicast RPC] 모든 클라이언트에 오답 메시지 표시
 
void OnBeginOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 WeightSwitch Overlap 시작 처리
 
void OnEndOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
 WeightSwitch Overlap 종료 처리
 
void OnWeightSwitch (int InButtonIndex, bool InActive)
 

Private 속성

bool AnswerFound = false
 
bool bActivateState = false
 
bool DetectTarget = false
 
float ElapsedTime = 0.0f
 

상세한 설명

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

생성자 & 소멸자 문서화

◆ AWeightSwitch()

AWeightSwitch::AWeightSwitch ( )

[개선] Replication 설정 추가

  • Multicast RPC가 작동하려면 Actor가 복제되어야 함
  • bReplicates: Actor를 네트워크로 복제
  • bAlwaysRelevant: 모든 클라이언트에 항상 관련성 유지 (중요한 게임플레이 Actor)

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

19{
20 PrimaryActorTick.bCanEverTick = true;
21
28 bReplicates = true;
29 bAlwaysRelevant = true;
30
31 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
32
33 SwitchBody = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("SwitchBody"));
34 SwitchBody->SetupAttachment(RootComponent);
35 SwitchBody->SetRelativeRotation(FRotator(0.f, 0.f, 90.0f));
36 SwitchBody->SetRelativeLocation(FVector::ZeroVector);
37 SwitchBody->SetRelativeScale3D(FVector(2.f));
38 SwitchBody->SetMobility(EComponentMobility::Movable);
39
40 SwitchCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("SwitchCollision"));
41 SwitchCollision->SetupAttachment(SwitchBody);
42 SwitchCollision->SetBoxExtent(FVector(40.f, 16.f, 50.f));
43 SwitchCollision->SetRelativeLocation(FVector::ZeroVector);
44 SwitchCollision->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
45 SwitchCollision->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
46 SwitchCollision->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
47 SwitchCollision->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap);
48}
TObjectPtr< class USkeletalMeshComponent > SwitchBody
TObjectPtr< class UBoxComponent > SwitchCollision

다음을 참조함 : SwitchBody, SwitchCollision.

멤버 함수 문서화

◆ ActivateTrigger()

bool AWeightSwitch::ActivateTrigger ( )
private

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

175{
176 TriggerDelay -= GetWorld()->GetDeltaSeconds();
177
178 if ( TriggerDelay < 0 )
179 {
181 return true;
182 }
183
184 return false;
185}

다음을 참조함 : Duration, TriggerDelay.

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

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

◆ BeginPlay()

void AWeightSwitch::BeginPlay ( )
overrideprotectedvirtual

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

51{
52 Super::BeginPlay();
53
54 this->TriggerDelay = Duration;
55 this->DetectTarget = false;
56 this->ElapsedTime = 0;
57 this->bActivateState = false;
58
59 SwitchCollision->OnComponentBeginOverlap.AddDynamic(this, &AWeightSwitch::OnBeginOverlap);
60 SwitchCollision->OnComponentEndOverlap.AddDynamic(this, &AWeightSwitch::OnEndOverlap);
61
62 UBroadcastManager::Get(GetWorld())->OnWeightSwitch.AddDynamic(this, &AWeightSwitch::OnWeightSwitch);
63
64 InitSwitch();
65}
void OnWeightSwitch(int InButtonIndex, bool InActive)
void OnEndOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
WeightSwitch Overlap 종료 처리
void OnBeginOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
WeightSwitch Overlap 시작 처리

다음을 참조함 : bActivateState, DetectTarget, Duration, ElapsedTime, InitSwitch(), OnBeginOverlap(), OnEndOverlap(), OnWeightSwitch(), SwitchCollision, TriggerDelay.

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

◆ InitSwitch()

void AWeightSwitch::InitSwitch ( )

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

68{
69 if (!SwitchBody)
70 {
71 PRINTLOG( TEXT("SwitchBody is null"));
72 return;
73 }
74
75 // 1. 머티리얼 얻기
76 UMaterialInterface* Material = SwitchBody->GetMaterial(0);
77 if (!Material)
78 {
79 PRINTLOG( TEXT("Material is null"));
80 return;
81 }
82
83 // 2. 다이나믹 머티리얼 인스턴스 생성
84 UMaterialInstanceDynamic* DynMaterial = UMaterialInstanceDynamic::Create(Material, this);
85 if (!DynMaterial)
86 {
87 PRINTLOG( TEXT("Failed to create dynamic material"));
88 return;
89 }
90
91 // 3. 변수에 저장
92 EmissiveMaterial = DynMaterial;
93
94 // 4. 메시에 적용 (이 단계가 누락되어 있었음!)
95 SwitchBody->SetMaterial(0, EmissiveMaterial);
96
97 // 5. 파라미터 설정
98 EmissiveMaterial->SetVectorParameterValue(EmissiveParam, DeactivateColor);
99
100 UAnimInstance* AnimInstance = SwitchBody->GetAnimInstance();
101 if (!AnimInstance)
102 {
103 PRINTLOG( TEXT("AnimInstance is null"));
104 return;
105 }
106
107 // 7. 캐스팅 및 변수 설정
108 UTweenAnimInstance* CubeButtonAnim = Cast<UTweenAnimInstance>(AnimInstance);
109 if (CubeButtonAnim)
110 {
111 AnimBlueprint = CubeButtonAnim;
112 }
113 else
114 {
115 PRINTLOG( TEXT("Failed to cast to UABP_CubeButton"));
116 }
117}
#define PRINTLOG(fmt,...)
Definition GameLogging.h:30
TObjectPtr< class UMaterialInstanceDynamic > EmissiveMaterial
TObjectPtr< class UTweenAnimInstance > AnimBlueprint
FLinearColor DeactivateColor
블루프린트에서 사용할 수 있는 간단한 트윈 애님 인스턴스.

다음을 참조함 : AnimBlueprint, DeactivateColor, EmissiveMaterial, EmissiveParam, PRINTLOG, SwitchBody.

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

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

◆ Multicast_ShowResultPopup()

void AWeightSwitch::Multicast_ShowResultPopup ( int32  CorrectAnswerIndex)
private

[Multicast RPC] 모든 클라이언트에 정답 결과 팝업 표시

매개변수
CorrectAnswerIndex정답 인덱스 (WrongAnswerList 마지막에 추가)

[문제] 서버에서만 팝업을 표시하여 클라이언트에서 보이지 않음 [해결] Multicast RPC로 모든 머신에 팝업 전달

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

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

◆ Multicast_ShowWrongPopup()

void AWeightSwitch::Multicast_ShowWrongPopup ( const FString &  LuggageColor,
const FString &  LuggagePattern 
)
private

[Multicast RPC] 모든 클라이언트에 오답 메시지 표시

매개변수
LuggageColor선택한 Luggage 색상
LuggagePattern선택한 Luggage 무늬

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

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

◆ OnActivate()

void AWeightSwitch::OnActivate ( const bool  State)

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

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

◆ OnActivate_Implementation()

void AWeightSwitch::OnActivate_Implementation ( const bool  State)
virtual

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

147{
148 if ( State )
149 {
150 PRINT_STRING(TEXT("CLICK ON"));
151 }
152 else
153 {
154 PRINT_STRING(TEXT("CLICK OFF"));
155 }
156}
#define PRINT_STRING(fmt,...)
Definition GameLogging.h:45

다음을 참조함 : PRINT_STRING.

◆ OnBeginOverlap()

void AWeightSwitch::OnBeginOverlap ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)
private

WeightSwitch Overlap 시작 처리

[문제] 클라이언트에서도 OnBeginOverlap이 호출되어 정답 판정 시도

  • GetGameState()가 클라이언트에서 nullptr이거나 복제 지연 가능
  • 정답 판정은 서버에서만 수행해야 함 [해결] HasAuthority() 체크로 서버 전용 실행 GameState nullptr 체크 추가

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

198{
199 if (!OtherActor)
200 return;
201
202 // [개선] 서버에서만 정답 판정 수행
203 if (!HasAuthority())
204 {
205 PRINTLOG(TEXT("OnBeginOverlap: Client detected overlap, skipping (server will handle)"));
206 return;
207 }
208
209 // 조건 1 : 플레이어일 경우 오픈
210 if ( IsPlayerDetect )
211 {
212 if (Cast<APlayerActor>(OtherActor))
213 {
214 // 리스트에 추가 (중복 방지)
215 OverlappingActors.AddUnique(OtherActor);
216
217 // 첫 번째 물체가 올라갔을 때만 타이머 시작
218 if (OverlappingActors.Num() == 1)
219 {
220 this->DetectTarget = true;
221 this->ElapsedTime = 0.0;
222 }
223 }
224 }
225
226 // 조건 2 : 정답 캐리어일 경우 오픈
227 if (Aluggage* Luggage = Cast<Aluggage>(OtherActor))
228 {
229 // [개선] GameState nullptr 체크
230 ALingoGameState* GS = Cast<ALingoGameState>(GetWorld()->GetGameState());
231 if (!GS)
232 {
233 PRINTLOG(TEXT("OnBeginOverlap: GameState is null! Cannot validate answer."));
234 return;
235 }
236
237 // [개선] ScenarioData 유효성 체크
238 if (GS)
239 {
240 const int32 CorrectIdx = GS->GetReadScenarioData().correct_answer_index;
241
242 PRINTLOG(TEXT("[WeightSwitch] Server validating: LuggageIdx=%d, CorrectIdx=%d"),
243 Luggage->GetSpawnIdx(), CorrectIdx);
244
245 if (CorrectIdx == Luggage->GetSpawnIdx())
246 {
247 // 리스트에 추가 (중복 방지)
248 OverlappingActors.AddUnique(OtherActor);
249
250 // 첫 번째 물체가 올라갔을 때만 타이머 시작
251 if (OverlappingActors.Num() == 1)
252 {
253 this->DetectTarget = true;
254 this->ElapsedTime = 0.0;
255 }
256
257 if (AnswerFound) return;
258
259 AnswerFound = true;
260
261
262 // [개선] Multicast RPC로 모든 클라이언트에 정답 팝업 표시 (정답 인덱스 전달)
263 FTimerHandle TimerHandle;
264 GetWorldTimerManager().SetTimer(TimerHandle, [this, GS, Luggage]
265 {
266 int32 LuggageIdx = Luggage->GetSpawnIdx();
267 // 모든 클라이언트에 정답 인덱스와 함께 결과 팝업 표시
268 Multicast_ShowResultPopup(LuggageIdx);
269
270 // 오답 캐리어 로그 (서버에서만)
271 TArray<int32> WrongList = GS->WrongReadAnswerList;
272 if (WrongList.Num() == 0)
273 return;
274
275 PRINTLOG( TEXT("[AWeightSwitch] Wrong luggage :"));
276 for (auto Wrong : WrongList)
277 {
278 PRINTLOG( TEXT("%d, "), Wrong);
279 }
280 }, 0.5f, false);
281 }
282 else
283 {
284 // [개선] Multicast RPC로 모든 클라이언트에 오답 팝업 표시
285 FTimerHandle TimerHandle;
286 GetWorldTimerManager().SetTimer(TimerHandle, [this, GS, Luggage]
287 {
288 FString LuggageColor = Luggage->GetColor();
289 FString LuggagePattern = Luggage->GetPattern();
290 int32 LuggageIdx = Luggage->GetSpawnIdx();
291
292 // 모든 클라이언트에 오답 메시지 표시
293 Multicast_ShowWrongPopup(LuggageColor, LuggagePattern);
294
295 // 오답 목록에 인덱스 추가 (서버에서만)
296 GS->AddWrongReadAnswer(LuggageIdx);
297
298 // 큐브 소거 (서버에서만, 자동 복제됨)
299 Luggage->Destroy();
300 }, 0.5f, false);
301 }
302
303 }
304 }
305}
TArray< int32 > WrongReadAnswerList
FORCEINLINE const FResponseReadScenario & GetReadScenarioData() const
void AddWrongReadAnswer(int32 Value)
TArray< class AActor * > OverlappingActors
void Multicast_ShowResultPopup(int32 CorrectAnswerIndex)
[Multicast RPC] 모든 클라이언트에 정답 결과 팝업 표시
void Multicast_ShowWrongPopup(const FString &LuggageColor, const FString &LuggagePattern)
[Multicast RPC] 모든 클라이언트에 오답 메시지 표시
상호작용 가능한 수하물 액터
Definition luggage.h:15

다음을 참조함 : ALingoGameState::AddWrongReadAnswer(), AnswerFound, FResponseReadScenario::correct_answer_index, DetectTarget, ElapsedTime, ALingoGameState::GetReadScenarioData(), IsPlayerDetect, Multicast_ShowResultPopup(), Multicast_ShowWrongPopup(), OverlappingActors, PRINTLOG, ALingoGameState::WrongReadAnswerList.

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

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

◆ OnEndOverlap()

void AWeightSwitch::OnEndOverlap ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex 
)
private

WeightSwitch Overlap 종료 처리

[개선] 서버에서만 실행

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

314{
315 if (!OtherActor)
316 return;
317
318 // [개선] 서버에서만 실행
319 if (!HasAuthority())
320 return;
321
322 // 리스트에서 제거
323 OverlappingActors.Remove(OtherActor);
324
325 // 모든 물체가 내려갔을 때만 비활성화
326 if (OverlappingActors.Num() == 0)
327 {
328 this->DetectTarget = false;
329 this->ElapsedTime = 0.0;
330
331 // 물건이 모두 떨어지면 해제
332 UBroadcastManager::Get(GetWorld())->SendWeightSwitch(ButtonIndex, false);
333 }
334}

다음을 참조함 : ButtonIndex, DetectTarget, ElapsedTime, OverlappingActors.

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

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

◆ OnWeightSwitch()

void AWeightSwitch::OnWeightSwitch ( int  InButtonIndex,
bool  InActive 
)
private

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

338{
339 if ( InButtonIndex != ButtonIndex)
340 return;
341
342 if (this->bActivateState == InActive)
343 return;
344
345 this->bActivateState = InActive;
346
348}
void SetActivate(bool State)

다음을 참조함 : bActivateState, ButtonIndex, SetActivate().

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

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

◆ SetActivate()

void AWeightSwitch::SetActivate ( bool  State)

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

120{
121 if (!EmissiveMaterial)
122 {
123 PRINTLOG( TEXT("EmissiveMaterial is null"));
124 return;
125 }
126
127 // 1. 색상 선택 (State가 true면 ActivateColor, false면 DeactivateColor)
128 FLinearColor SelectedColor = State ? ActivateColor : DeactivateColor;
129
130 // 2. 머티리얼 파라미터 설정
131 EmissiveMaterial->SetVectorParameterValue(EmissiveParam, SelectedColor);
132
133 // 3. 애님 블루프린트의 ChangeState 호출
134 if (AnimBlueprint)
135 {
136 AnimBlueprint->ChangeState(State);
137 }
138 else
139 {
140 PRINTLOG( TEXT("AnimBlueprint is null"));
141 }
142
143 OnActivate(State);
144}
void OnActivate(const bool State)
FLinearColor ActivateColor

다음을 참조함 : ActivateColor, AnimBlueprint, DeactivateColor, EmissiveMaterial, EmissiveParam, OnActivate(), PRINTLOG.

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

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

◆ Tick()

void AWeightSwitch::Tick ( float  DeltaTime)
overridevirtual

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

159{
160 Super::Tick(DeltaTime);
161
162 if ( DetectTarget == false)
163 return;
164
165 ElapsedTime += GetWorld()->GetDeltaSeconds();
166
167 if( ActivateTrigger() )
168 {
169 // 물건이 TriggerDelay 타임 이상 올라가면 발동
170 UBroadcastManager::Get(GetWorld())->SendWeightSwitch(ButtonIndex, true);
171 }
172}

다음을 참조함 : ActivateTrigger(), ButtonIndex, DetectTarget, ElapsedTime.

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

멤버 데이터 문서화

◆ ActivateColor

FLinearColor AWeightSwitch::ActivateColor = FLinearColor::Blue

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

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

◆ AnimBlueprint

TObjectPtr<class UTweenAnimInstance> AWeightSwitch::AnimBlueprint

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

다음에 의해서 참조됨 : InitSwitch(), SetActivate().

◆ AnswerFound

bool AWeightSwitch::AnswerFound = false
private

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

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

◆ bActivateState

bool AWeightSwitch::bActivateState = false
private

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

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

◆ ButtonIndex

int AWeightSwitch::ButtonIndex = 0

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

다음에 의해서 참조됨 : OnEndOverlap(), OnWeightSwitch(), Tick().

◆ DeactivateColor

FLinearColor AWeightSwitch::DeactivateColor = FLinearColor::Yellow

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

다음에 의해서 참조됨 : InitSwitch(), SetActivate().

◆ DetectTarget

bool AWeightSwitch::DetectTarget = false
private

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

다음에 의해서 참조됨 : BeginPlay(), OnBeginOverlap(), OnEndOverlap(), Tick().

◆ Duration

float AWeightSwitch::Duration = 0.25f

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

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

◆ ElapsedTime

float AWeightSwitch::ElapsedTime = 0.0f
private

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

다음에 의해서 참조됨 : BeginPlay(), OnBeginOverlap(), OnEndOverlap(), Tick().

◆ EmissiveMaterial

TObjectPtr<class UMaterialInstanceDynamic> AWeightSwitch::EmissiveMaterial

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

다음에 의해서 참조됨 : InitSwitch(), SetActivate().

◆ EmissiveParam

FName AWeightSwitch::EmissiveParam = "EmissiveColor"

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

다음에 의해서 참조됨 : InitSwitch(), SetActivate().

◆ IsPlayerDetect

bool AWeightSwitch::IsPlayerDetect = false

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

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

◆ OverlappingActors

TArray<class AActor*> AWeightSwitch::OverlappingActors

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

다음에 의해서 참조됨 : OnBeginOverlap(), OnEndOverlap().

◆ SwitchBody

TObjectPtr<class USkeletalMeshComponent> AWeightSwitch::SwitchBody

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

다음에 의해서 참조됨 : AWeightSwitch(), InitSwitch().

◆ SwitchCollision

TObjectPtr<class UBoxComponent> AWeightSwitch::SwitchCollision

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

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

◆ TriggerDelay

float AWeightSwitch::TriggerDelay = 0.25f

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

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


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