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

#include <TargetableWeapon.h>

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

Public 멤버 함수

 ATargetableWeapon ()
 
virtual bool IsTargetable () const override
 
virtual void ShowLockOnMarker () override
 
virtual void HideLockOnMarker () override
 
- AInteractableActor(으)로부터 상속된 Public 멤버 함수
 AInteractableActor ()
 
virtual UInteractionChannelInteract (AActor *Caller) override
 
void ForceStopInteraction () const
 
- ITargetableInterface(으)로부터 상속된 Public 멤버 함수
virtual void ShowTargetingMarker (float MarkerAlpha)
 
virtual void HideTargetingMarker ()
 
virtual bool IsTargeted ()
 
virtual void SetPrevent (bool bPrevent)
 
virtual bool IsPrevented () const
 
virtual FVector GetTargetedActorLocation ()
 
virtual FRotator GetTargetedActionRotation ()
 
virtual bool IsTargetValid () const
 
- IObjectPoolingInterface(으)로부터 상속된 Public 멤버 함수
void OnSpawnFromPool ()
 
void OnReturnToPool ()
 

Public 속성

FGameplayTag WeaponTag
 

Protected 멤버 함수

virtual void BeginPlay () override
 
virtual void OnBeginInteraction (const AActor *Caller) override
 
virtual void OnReturnToPool_Implementation () override
 
virtual void OnSpawnFromPool_Implementation () override
 
- AInteractableActor(으)로부터 상속된 Protected 멤버 함수
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
virtual void OnEndInteraction (const AActor *Caller) override
 

Protected 속성

TObjectPtr< USceneComponent > RigComponent
 
TObjectPtr< UStaticMeshComponent > StaticMeshComponent
 
TObjectPtr< UBoxComponent > BoxComponent
 
TObjectPtr< UTargetingMarkerComponent > TargetingMarker
 
- AInteractableActor(으)로부터 상속된 Protected 속성
TObjectPtr< UInteractabilityComponent > InteractabilityComp
 

추가로 상속된 멤버들

- ITargetableInterface(으)로부터 상속된 정적 Public 멤버 함수
template<typename T >
static ITargetableInterfaceFrom (TObjectPtr< T > Object)
 
static ITargetableInterfaceFrom (UObject *Object)
 
static UObject * AsObject (ITargetableInterface *Interface)
 
static AActor * AsActor (ITargetableInterface *Interface)
 

생성자 & 소멸자 문서화

◆ ATargetableWeapon()

ATargetableWeapon::ATargetableWeapon ( )
18{
19 BoxComponent = CreateDefaultSubobject<UBoxComponent>(TEXT("BoxComponent"));
20 RigComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RigComponent"));
21 TargetingMarker = CreateDefaultSubobject<UTargetingMarkerComponent>(TEXT("LockOnMarker"));
22 StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
23
24 RootComponent = RigComponent;
25 BoxComponent->SetupAttachment(RigComponent);
26 StaticMeshComponent->SetupAttachment(BoxComponent);
27 TargetingMarker->SetupAttachment(GetRootComponent());
28}
TObjectPtr< USceneComponent > RigComponent
Definition TargetableWeapon.h:47
TObjectPtr< UTargetingMarkerComponent > TargetingMarker
Definition TargetableWeapon.h:56
TObjectPtr< UBoxComponent > BoxComponent
Definition TargetableWeapon.h:53
TObjectPtr< UStaticMeshComponent > StaticMeshComponent
Definition TargetableWeapon.h:50

멤버 함수 문서화

◆ BeginPlay()

void ATargetableWeapon::BeginPlay ( )
overrideprotectedvirtual

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

51{
52 Super::BeginPlay();
54}
virtual void OnSpawnFromPool_Implementation() override
Definition TargetableWeapon.h:38
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ HideLockOnMarker()

void ATargetableWeapon::HideLockOnMarker ( )
overridevirtual

ITargetableInterface를 구현.

45{
46 TargetingMarker->HideMarker();
47}

◆ IsTargetable()

bool ATargetableWeapon::IsTargetable ( ) const
overridevirtual

ITargetableInterface를 구현.

32{
33 //TODO: 만약 사라지고 있는 중, (디졸브 중)이라면 False를 반환하게 구현 추가.
34 return true;
35}

◆ OnBeginInteraction()

void ATargetableWeapon::OnBeginInteraction ( const AActor *  Caller)
overrideprotectedvirtual

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

58{
59 Super::OnBeginInteraction(Caller);
60
61 check(Caller);
62 const AMainPlayerCharacter* Player = Cast<AMainPlayerCharacter>(Caller);
63
64 if (Player == nullptr)
65 {
66 LOG_ERROR(LogCK, "%s 으로 형변환 실패. ", NAMEOF(AMainPlayerCharacter));
67 return;
68 }
69
70 APlayerController* PC = Cast<APlayerController>(Player->GetController());
71 if (PC == nullptr)
72 {
73 LOG_ERROR(LogCK, "%s 잘못된 유형의 오브젝트가 상호작용을 시도함. ", *Caller->GetName());
74 return;
75 }
76
77 UPlayerManagementSubsystem* PlayerManagement = PC->GetLocalPlayer()->GetSubsystem<UPlayerManagementSubsystem>();
78 if (PlayerManagement == nullptr)
79 {
80 LOG_ERROR(LogCK, "%s 상호작용 실패. ", *Caller->GetName());
81 return;
82 }
83
84 if (WeaponTag.IsValid() == false)
85 {
86 LOG_ERROR(LogCK, "%s WeaponTag 가 비어 있어 장착 요청을 발행할 수 없음.", *GetName());
87 return;
88 }
89
90 if (PlayerManagement->SwapWeapon(WeaponTag) == false)
91 {
92 LOG_WARNING(LogCK, "%s 무기 교체에 실패했습니다.", *WeaponTag.ToString());
93 return;
94 }
95
96 PlayerManagement->UnregisterSpawnedWeapon(WeaponTag, this);
97 LOG_INFO(LogCK, "%s가 %s에 상호작용을 성공적으로 시도함. (WeaponTag=%s)", *Caller->GetName(), *GetName(), *WeaponTag.ToString());
98 UStageManagementSubsystem* StageSubsystem = GetWorld()->GetSubsystem<UStageManagementSubsystem>();
99
100 if (StageSubsystem == nullptr)
101 {
102 LOG_ERROR(LogCK, "%s를 가져올 수 없습니다.", NAMEOF(UStageManagementSubsystem));
103 return;
104 }
105
107
108 if (SpawnSystem == nullptr)
109 {
110 LOG_ERROR(LogCK, "%s를 가져올 수 없습니다.", NAMEOF(UInteractableSpawnSystemComponent));
111 return;
112 }
113
114 SpawnSystem->DespawnInteractableActor(this);
115}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
#define NAMEOF(Type)
Definition CK_UE.h:30
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
Definition MainPlayerCharacter.h:39
FGameplayTag WeaponTag
Definition TargetableWeapon.h:43
Definition InteractableSpawnSystemComponent.h:18
void DespawnInteractableActor(AActor *Interactable)
Definition InteractableSpawnSystemComponent.cpp:100
Definition PlayerManagementSubsystem.h:42
void UnregisterSpawnedWeapon(const FGameplayTag &WeaponTag, const ATargetableWeapon *SpawnedWeapon=nullptr)
Definition PlayerManagementSubsystem.cpp:518
bool SwapWeapon(const FGameplayTag &NewWeaponTag)
Definition PlayerManagementSubsystem.cpp:422
Definition StageManagementSubsystem.h:147
TSpawnSystem * GetOrCreateSpawnSystem()
Definition StageManagementSubsystem.h:282
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnReturnToPool_Implementation()

void ATargetableWeapon::OnReturnToPool_Implementation ( )
overrideprotectedvirtual

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

119{
120 check(InteractabilityComp);
121
122 if (APlayerController* PC = GetWorld() ? GetWorld()->GetFirstPlayerController() : nullptr)
123 {
124 if (PC->GetLocalPlayer())
125 {
126 if (UPlayerManagementSubsystem* PlayerManagement = PC->GetLocalPlayer()->GetSubsystem<UPlayerManagementSubsystem>())
127 {
128 PlayerManagement->UnregisterSpawnedWeapon(WeaponTag, this);
129 }
130 }
131 }
132
133 if (InteractabilityComp->IsRegistered())
134 {
135 InteractabilityComp->UnregisterFromChannel();
136 }
137}
TObjectPtr< UInteractabilityComponent > InteractabilityComp
Definition InteractableActor.h:41

◆ OnSpawnFromPool_Implementation()

virtual void ATargetableWeapon::OnSpawnFromPool_Implementation ( )
inlineoverrideprotectedvirtual

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

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

◆ ShowLockOnMarker()

void ATargetableWeapon::ShowLockOnMarker ( )
overridevirtual

ITargetableInterface를 구현.

39{
40 TargetingMarker->ShowMarker();
41}

멤버 데이터 문서화

◆ BoxComponent

TObjectPtr<UBoxComponent> ATargetableWeapon::BoxComponent
protected

◆ RigComponent

TObjectPtr<USceneComponent> ATargetableWeapon::RigComponent
protected

◆ StaticMeshComponent

TObjectPtr<UStaticMeshComponent> ATargetableWeapon::StaticMeshComponent
protected

◆ TargetingMarker

TObjectPtr<UTargetingMarkerComponent> ATargetableWeapon::TargetingMarker
protected

◆ WeaponTag

FGameplayTag ATargetableWeapon::WeaponTag

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