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

#include <CheckPoint.h>

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

Public 멤버 함수

 ACheckPoint ()
 
virtual UStageEventListenerComponent * GetEventListenerComponent () const override
 
virtual EStageEvent GetStageEvent () const override
 
void SaveCheckPoint (AActor *PlayerActor)
 
void SendRespawnEvent (AActor *PlayerActor)
 
FORCEINLINE FTransform GetSpawnTransform () const
 
- AInteractableActor(으)로부터 상속된 Public 멤버 함수
 AInteractableActor ()
 
virtual UInteractionChannelInteract (AActor *Caller) override
 
void ForceStopInteraction () const
 
- IStageEventListenerInterface(으)로부터 상속된 Public 멤버 함수
virtual EListenerSlot GetSlotForEvent (const FName EventID) const
 
virtual const TMap< FName, EListenerSlot > * GetListenEvents () const
 

Public 속성

FOnCheckPointSavedDelegate OnCheckPointSaved
 

Protected 멤버 함수

virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
void HandleBoxBeginOverlap (UPrimitiveComponent *OverlappedComp, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 
- AInteractableActor(으)로부터 상속된 Protected 멤버 함수
virtual void OnBeginInteraction (const AActor *Caller) override
 
virtual void OnEndInteraction (const AActor *Caller) override
 

Protected 속성

bool bActivateOnBeginPlay = false
 
bool bDetectOnce = true
 
TObjectPtr< UBoxComponent > BoxComponent
 
TObjectPtr< UStageEventListenerComponent > EventListenerComponent
 
TObjectPtr< UStageEventSenderComponent > VisitEventSender
 
TObjectPtr< UStageEventSenderComponent > RespawnEventSender
 
TObjectPtr< USceneComponent > SpawnPointComponent
 
- AInteractableActor(으)로부터 상속된 Protected 속성
TObjectPtr< UInteractabilityComponent > InteractabilityComp
 

Private 멤버 함수

void ActivateOnBeginPlay ()
 

Private 속성

bool bVisited = false
 

생성자 & 소멸자 문서화

◆ ACheckPoint()

ACheckPoint::ACheckPoint ( )
23{
24 BoxComponent = CreateDefaultSubobject<UBoxComponent>(TEXT("BoxComponent"));
25 BoxComponent->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
26 BoxComponent->SetCollisionObjectType(CCHANNEL_ENEMYACTION);
27 BoxComponent->SetCollisionResponseToAllChannels(ECR_Ignore);
28 BoxComponent->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap);
29
30 VisitEventSender = CreateDefaultSubobject<UStageEventSenderComponent>(TEXT("VisitEventSender"));
31 EventListenerComponent = CreateDefaultSubobject<UStageEventListenerComponent>(TEXT("EventListenerComponent"));
32 RespawnEventSender = CreateDefaultSubobject<UStageEventSenderComponent>(TEXT("RespawnEventSender"));
33
34 SpawnPointComponent = CreateDefaultSubobject<USceneComponent>(TEXT("SpawnPoint"));
35 SpawnPointComponent->SetupAttachment(BoxComponent);
36
37#if WITH_EDITORONLY_DATA
38 SpriteComponent = CreateEditorOnlyDefaultSubobject<UBillboardComponent>(TEXT("SpriteComponent"));
39
40 if (SpriteComponent)
41 {
42 SpriteComponent->SetupAttachment(SpawnPointComponent);
43 SpriteComponent->bIsScreenSizeScaled = false;
44 SpriteComponent->SetRelativeScale3D(FVector(0.35f, 0.35f, 0.35f));
45 }
46#endif
47}
#define CCHANNEL_ENEMYACTION
Definition CK_Collision.h:8
TObjectPtr< UBoxComponent > BoxComponent
Definition CheckPoint.h:79
TObjectPtr< UStageEventListenerComponent > EventListenerComponent
Definition CheckPoint.h:82
TObjectPtr< UStageEventSenderComponent > RespawnEventSender
Definition CheckPoint.h:90
TObjectPtr< UStageEventSenderComponent > VisitEventSender
Definition CheckPoint.h:86
TObjectPtr< USceneComponent > SpawnPointComponent
Definition CheckPoint.h:93

멤버 함수 문서화

◆ ActivateOnBeginPlay()

void ACheckPoint::ActivateOnBeginPlay ( )
private
101{
102 if (BoxComponent == nullptr)
103 {
104 return;
105 }
106
107 APlayerController* PC = GetWorld()->GetFirstPlayerController();
108
109 if (PC == nullptr)
110 {
111 return;
112 }
113
114 APawn* Pawn = PC->GetPawn();
115
116 if (Pawn == nullptr)
117 {
118 return;
119 }
120
121 // 스폰 시점에 이미 박스 볼륨 안에 있으면 OnComponentBeginOverlap이 발생하지 않으므로,
122 // 최초 한 번 직접 오버랩을 검사해 진입을 처리한다. (Unity의 생성 시 충돌 감지와 동일한 의도)
123 if (BoxComponent->IsOverlappingActor(Pawn) == false)
124 {
125 return;
126 }
127
128 SaveCheckPoint(Pawn);
129}
void SaveCheckPoint(AActor *PlayerActor)
Definition CheckPoint.cpp:132
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ BeginPlay()

void ACheckPoint::BeginPlay ( )
overrideprotectedvirtual

AInteractableActor(으)로부터 재구현되었습니다.

51{
52 Super::BeginPlay();
53
54 if (BoxComponent)
55 {
56 BoxComponent->OnComponentBeginOverlap.AddDynamic(this, &ThisClass::HandleBoxBeginOverlap);
57 }
58 else
59 {
60 LOG_ERROR(LogCKLevel, "%s 를 찾을 수 없습니다. ", NAMEOF(UBoxComponent));
61 }
62
64 {
65 GetWorld()->GetTimerManager().SetTimerForNextTick(this, &ThisClass::ActivateOnBeginPlay);
66 }
67}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF(Type)
Definition CK_UE.h:30
bool bActivateOnBeginPlay
Definition CheckPoint.h:72

◆ EndPlay()

void ACheckPoint::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprotectedvirtual

AInteractableActor(으)로부터 재구현되었습니다.

71{
72 if (BoxComponent)
73 {
74 BoxComponent->OnComponentBeginOverlap.RemoveDynamic(this, &ThisClass::HandleBoxBeginOverlap);
75 }
76
77 Super::EndPlay(EndPlayReason);
78}

◆ GetEventListenerComponent()

virtual UStageEventListenerComponent * ACheckPoint::GetEventListenerComponent ( ) const
inlineoverridevirtual

IStageEventListenerInterface를 구현.

32 {
34 }

◆ GetSpawnTransform()

FORCEINLINE FTransform ACheckPoint::GetSpawnTransform ( ) const
inline
50 {
51 return SpawnPointComponent ? SpawnPointComponent->GetComponentTransform() : GetActorTransform();
52 }

◆ GetStageEvent()

virtual EStageEvent ACheckPoint::GetStageEvent ( ) const
inlineoverridevirtual

◆ HandleBoxBeginOverlap()

void ACheckPoint::HandleBoxBeginOverlap ( UPrimitiveComponent *  OverlappedComp,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)
protected
82{
83 if (OtherActor)
84 {
85 if (bDetectOnce && bVisited)
86 {
87 return;
88 }
89
90 LOG_SCREEN_C(FColor::Cyan, "CheckPoint 진입 : %s", *OtherActor->GetName());
91 SaveCheckPoint(OtherActor);
92 }
93 else
94 {
95 LOG_SCREEN_ERROR("CheckPoint 진입 실패, 충돌 액터가 없습니다. ");
96 }
97}
#define LOG_SCREEN_ERROR(Format,...)
Definition CK_UE.h:51
#define LOG_SCREEN_C(Color, Format,...)
Definition CK_UE.h:49
bool bDetectOnce
Definition CheckPoint.h:76
bool bVisited
Definition CheckPoint.h:101
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SaveCheckPoint()

void ACheckPoint::SaveCheckPoint ( AActor *  PlayerActor)
133{
134 APawn* Pawn = Cast<APawn>(PlayerActor);
135
136 if (Pawn == nullptr || Pawn->IsPlayerControlled() == false)
137 {
138 return;
139 }
140
141 APlayerController* PlayerController = Cast<APlayerController>(Pawn->GetController());
142
143 if (PlayerController == nullptr || PlayerController->GetLocalPlayer() == nullptr)
144 {
145 return;
146 }
147
148 UPlayerManagementSubsystem* PlayerManagement = PlayerController->GetLocalPlayer()->GetSubsystem<UPlayerManagementSubsystem>();
149
150 if (PlayerManagement == nullptr)
151 {
152 LOG_ERROR(LogCKPlayer, "%s를 가져올 수 없습니다. ", NAMEOF(UPlayerManagementSubsystem));
153 return;
154 }
155
156 PlayerManagement->CacheCheckPoint(this);
157
158 if (bVisited)
159 {
160 return;
161 }
162
163 bVisited = true;
164
166 {
167 VisitEventSender->Send(PlayerActor);
168 }
169
170 const UWorld* World = GetWorld();
171 const float SavedTimeSeconds = World ? World->GetTimeSeconds() : 0.0f;
172 OnCheckPointSaved.Broadcast(PlayerActor, SavedTimeSeconds, SpawnPointComponent->GetComponentLocation(), this);
173
174 LOG_SCREEN_C(FColor::Cyan, "체크 포인트를 성공적으로 저장했습니다. ");
175}
FOnCheckPointSavedDelegate OnCheckPointSaved
Definition CheckPoint.h:56
Definition PlayerManagementSubsystem.h:42
void CacheCheckPoint(ACheckPoint *CheckPoint)
Definition PlayerManagementSubsystem.cpp:227
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SendRespawnEvent()

void ACheckPoint::SendRespawnEvent ( AActor *  PlayerActor)
179{
180 if (RespawnEventSender == nullptr)
181 {
182 LOG_SCREEN_ERROR("리스폰 이벤트를 전달받았으나, %s가 없어 전송할 수 없습니다. ", NAMEOF(UStageEventSenderComponent));
183 return;
184 }
185
186 RespawnEventSender->Send(PlayerActor);
187}

멤버 데이터 문서화

◆ bActivateOnBeginPlay

bool ACheckPoint::bActivateOnBeginPlay = false
protected

◆ bDetectOnce

bool ACheckPoint::bDetectOnce = true
protected

◆ BoxComponent

TObjectPtr<UBoxComponent> ACheckPoint::BoxComponent
protected

◆ bVisited

bool ACheckPoint::bVisited = false
private

◆ EventListenerComponent

TObjectPtr<UStageEventListenerComponent> ACheckPoint::EventListenerComponent
protected

◆ OnCheckPointSaved

FOnCheckPointSavedDelegate ACheckPoint::OnCheckPointSaved

◆ RespawnEventSender

TObjectPtr<UStageEventSenderComponent> ACheckPoint::RespawnEventSender
protected

◆ SpawnPointComponent

TObjectPtr<USceneComponent> ACheckPoint::SpawnPointComponent
protected

◆ VisitEventSender

TObjectPtr<UStageEventSenderComponent> ACheckPoint::VisitEventSender
protected

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