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

#include <EnemyCharacter.h>

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

Public 멤버 함수

 AEnemyCharacter ()
 
virtual void ForceReturnToPool (bool bIsSpawnedEnemy=false) override
 
FORCEINLINE float GetAICombatRadius () const
 
FORCEINLINE float GetAICombatExitRadius () const
 
- AEnemyCharacterBase(으)로부터 상속된 Public 멤버 함수
 AEnemyCharacterBase (const FObjectInitializer &ObjectInitializer=FObjectInitializer::Get())
 
virtual void ShowLockOnMarker () override
 
virtual void HideLockOnMarker () override
 
virtual void ShowTargetingMarker (float MarkerAlpha) override
 
virtual void HideTargetingMarker () override
 
virtual bool IsTargetable () const override
 
virtual UConstellationBaseCreateConstellation () override
 
FORCEINLINE UEnemyAttributeSetGetEnemyAttributeSet () const
 
FORCEINLINE FName GetConstellationID () const
 
FORCEINLINE UTargetingMarkerComponent * GetTargetingMarkerComponent () const
 
FORCEINLINE UTargetingMarkerComponent * GetLockOnMarkerComponent () const
 
FORCEINLINE UEnemyMotionWarpingComponent * GetMotionWarpingComponent () const
 
FORCEINLINE UCharacterControlDataGetCharacterControlData () const
 
- ACharacterBase(으)로부터 상속된 Public 멤버 함수
 ACharacterBase (const FObjectInitializer &ObjectInitializer=FObjectInitializer::Get())
 
virtual void SetDead ()
 
virtual bool IsDead () const
 
bool IsStaggerImmune () const
 
virtual class UAbilitySystemComponent * GetAbilitySystemComponent () const override
 
FORCEINLINE FOnAbilitySystemReady & GetOnAbilitySystemReady ()
 
FORCEINLINE UKnockbackComponent * GetKnockbackComponent () const
 
- IObjectPoolingInterface(으)로부터 상속된 Public 멤버 함수
void OnSpawnFromPool ()
 
void OnReturnToPool ()
 
- ITargetableInterface(으)로부터 상속된 Public 멤버 함수
virtual bool IsTargeted ()
 
virtual void SetPrevent (bool bPrevent)
 
virtual bool IsPrevented () const
 
virtual FVector GetTargetedActorLocation ()
 
virtual FRotator GetTargetedActionRotation ()
 
virtual bool IsTargetValid () const
 

Protected 멤버 함수

virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
virtual void InitializeAttributes () override
 
virtual void BindCharacterDelegates () override
 
virtual void UnbindCharacterDelegates () override
 
virtual void OnReturnToPool_Implementation () override
 
virtual void OnDeath () override
 
virtual UAnimMontage * GetHitReactMontage () const override
 
virtual void RotateHitSource (const FVector &HitFromLocation) override
 
virtual void OnHitReactMontageEnded (UAnimMontage *Montage, bool bInterrupted) override
 
void OnHitStunTagChanged (const FGameplayTag CallbackTag, int32 NewCount) const
 
void OnAnyGameplayEffectApplied (UAbilitySystemComponent *InASC, const FGameplayEffectSpec &Spec, FActiveGameplayEffectHandle Handle)
 
void TrySendStunEnd () const
 
virtual IAbilityBasedWidgetInterfaceGetAbilityBasedWidgetInterface () override
 
- AEnemyCharacterBase(으)로부터 상속된 Protected 멤버 함수
virtual void PostInitializeComponents () override
 
virtual void BeginPlay () override
 
virtual void PossessedBy (AController *NewController) override
 
virtual void GiveDefaultAbilities ()
 
virtual void RebindHpBarWidget ()
 
virtual void OnBeforeStateTreeStart ()
 
void StartAILogic ()
 
void StopAILogic (const FString &Reason)
 
virtual void OnSpawnFromPool_Implementation () override
 
void ActivateEnemyState ()
 
void DeactivateEnemyState ()
 
virtual void ResetEnemyBehaviorComponents ()
 
virtual void OnDamageTaken (const FDamageResultData &DamageResult) override
 
virtual void PlayDeadAnimation () override
 
- ACharacterBase(으)로부터 상속된 Protected 멤버 함수
virtual void virtual InitializeAttributes() PURE_VIRTUAL(ACK_CharacterBase void OnMoveSpeedChanged (const struct FOnAttributeChangeData &Data)
 
bool CanPlayHitReaction (const FDamageResultData &DamageResult) const
 
void PlayHitReaction (AActor *Attacker)
 

Protected 속성

TObjectPtr< UGASWidgetComponentHpBar
 
float AICombatRadius = 0.0f
 
float AICombatExitRadius = 0.0f
 
- AEnemyCharacterBase(으)로부터 상속된 Protected 속성
TObjectPtr< UEnemyAttributeSetAttributeSet
 
TObjectPtr< UCharacterControlDataCharacterControlData
 
TObjectPtr< UEnemySpawnDefinitionEnemySpawnDefinition
 
TObjectPtr< UEnemyDespawnDefinitionEnemyDespawnDefinition
 
TObjectPtr< UTargetingMarkerComponent > LockOnMarker
 
TObjectPtr< UTargetingMarkerComponent > TargetingMarker
 
TObjectPtr< UEnemyMotionWarpingComponent > MotionWarpingComponent
 
TObjectPtr< AAIController > CachedAIController
 
TObjectPtr< UStateTreeAIComponent > CachedStateTreeComp
 
const FEnemyExtendedDataEnemyExtendedData = nullptr
 
FTransform InitialMeshRelativeTransform
 
FName ConstellationID
 
float EnemyExp = 0.0f
 
- ACharacterBase(으)로부터 상속된 Protected 속성
FOnAbilitySystemReady OnAbilitySystemReady
 
TObjectPtr< UAbilitySystemComponent > ASC
 
TObjectPtr< UKnockbackComponent > KnockbackComponent
 
TObjectPtr< UAudioEmitterComponent > AudioTagComponent
 

Private 속성

FDelegateHandle HitStunTagDelegateHandle
 
FDelegateHandle GEAppliedDelegateHandle
 

추가로 상속된 멤버들

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

상세한 설명

일반 몬스터 전용 Enemy.

생성자 & 소멸자 문서화

◆ AEnemyCharacter()

AEnemyCharacter::AEnemyCharacter ( )
21{
22 AttributeSet = CreateDefaultSubobject<UEnemyAttributeSet>(TEXT("EnemyAttributeSet"));
23 HpBar = CreateDefaultSubobject<UGASWidgetComponent>(TEXT("WidgetHpBar"));
24 HpBar->SetupAttachment(GetRootComponent());
25 HpBar->SetRelativeLocation(FVector(0.0f, 0.0f, 180.0f));
26 HpBar->SetDrawSize(FVector2D(150.0f, 15.0f));
27 HpBar->SetWidgetSpace(EWidgetSpace::Screen);
28 HpBar->SetCollisionEnabled(ECollisionEnabled::NoCollision);
29}
TObjectPtr< UEnemyAttributeSet > AttributeSet
Definition EnemyCharacterBase.h:164
TObjectPtr< UGASWidgetComponent > HpBar
Definition EnemyCharacter.h:74

멤버 함수 문서화

◆ BindCharacterDelegates()

void AEnemyCharacter::BindCharacterDelegates ( )
overrideprotectedvirtual

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

83{
84 Super::BindCharacterDelegates();
85
86 if (ASC == nullptr)
87 {
88 return;
89 }
90
91 if (HitStunTagDelegateHandle.IsValid() == false)
92 {
93 HitStunTagDelegateHandle = ASC->RegisterGameplayTagEvent(TAG_CHARACTER_STATE_ISHITSTUN, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &ThisClass::OnHitStunTagChanged);
94 }
95
96 if (GEAppliedDelegateHandle.IsValid() == false)
97 {
98 GEAppliedDelegateHandle = ASC->OnGameplayEffectAppliedDelegateToSelf.AddUObject(this, &ThisClass::OnAnyGameplayEffectApplied);
99 }
100}
TObjectPtr< UAbilitySystemComponent > ASC
Definition CharacterBase.h:80
FDelegateHandle HitStunTagDelegateHandle
Definition EnemyCharacter.h:80
FDelegateHandle GEAppliedDelegateHandle
Definition EnemyCharacter.h:81

◆ EndPlay()

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

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

35{
36 if (DeadTimerHandle.IsValid())
37 {
38 if (UWorld* World = GetWorld())
39 {
40 World->GetTimerManager().ClearTimer(DeadTimerHandle);
41 }
42 }
43
44 Super::EndPlay(EndPlayReason);
45}
FTimerHandle DeadTimerHandle
Definition EnemyCharacterBase.h:160

◆ ForceReturnToPool()

void AEnemyCharacter::ForceReturnToPool ( bool  bIsSpawnedEnemy = false)
overridevirtual

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

49{
50 if (GetWorld()->GetTimerManager().IsTimerActive(DeadTimerHandle))
51 {
52 GetWorld()->GetTimerManager().ClearTimer(DeadTimerHandle);
53 }
54
55 Super::ForceReturnToPool(bIsSpawnedEnemy);
56}

◆ GetAbilityBasedWidgetInterface()

IAbilityBasedWidgetInterface * AEnemyCharacter::GetAbilityBasedWidgetInterface ( )
overrideprotectedvirtual
249{
250 return HpBar;
251}

◆ GetAICombatExitRadius()

FORCEINLINE float AEnemyCharacter::GetAICombatExitRadius ( ) const
inline
40 {
41 return AICombatExitRadius;
42 }
float AICombatExitRadius
Definition EnemyCharacter.h:77

◆ GetAICombatRadius()

FORCEINLINE float AEnemyCharacter::GetAICombatRadius ( ) const
inline
35 {
36 return AICombatRadius;
37 }
float AICombatRadius
Definition EnemyCharacter.h:76

◆ GetHitReactMontage()

UAnimMontage * AEnemyCharacter::GetHitReactMontage ( ) const
overrideprotectedvirtual

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

144{
146}
const FEnemyExtendedData * EnemyExtendedData
Definition EnemyCharacterBase.h:191
TObjectPtr< UAnimMontage > HitReactMontage
Definition CharacterControlData.h:156
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InitializeAttributes()

void AEnemyCharacter::InitializeAttributes ( )
overrideprotectedvirtual

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

62{
63 Super::InitializeAttributes();
64
65 if (CharacterControlData == nullptr || EnemyExtendedData == nullptr || EnemyExtendedData->EnemyAICombatTable == nullptr)
66 {
67 return;
68 }
69
70 const FEnemyAICombatTableRow* CombatRow = EnemyExtendedData->EnemyAICombatTable->FindRow<FEnemyAICombatTableRow>(CharacterControlData->StatRowName,TEXT("MonsterAICombatContext"));
71
72 if (CombatRow == nullptr)
73 {
74 LOG_WARNING(LogCKAttribute, "Enemy AI Combat Row 없음");
75 return;
76 }
77
78 AICombatRadius = CombatRow->Combat_Radius;
80}
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
TObjectPtr< UCharacterControlData > CharacterControlData
Definition EnemyCharacterBase.h:167
Definition EnemyAITable.h:12
float Combat_Radius
Definition EnemyAITable.h:17
float Combat_Exit_Radius
Definition EnemyAITable.h:20
TObjectPtr< UDataTable > EnemyAICombatTable
Definition CharacterControlData.h:147

◆ OnAnyGameplayEffectApplied()

void AEnemyCharacter::OnAnyGameplayEffectApplied ( UAbilitySystemComponent *  InASC,
const FGameplayEffectSpec &  Spec,
FActiveGameplayEffectHandle  Handle 
)
protected
184{
185 if (!Spec.Def)
186 {
187 return;
188 }
189
190 if (IsDead())
191 {
192 return;
193 }
194
195 const FGameplayTagContainer& GrantedTags = Spec.Def->GetGrantedTags();
196 if (GrantedTags.IsEmpty())
197 {
198 return;
199 }
200
201 if (!GrantedTags.HasTag(TAG_CHARACTER_STATE_ISHITSTUN))
202 {
203 return;
204 }
205
207 {
208 CachedAIController->StopMovement();
209
211 {
212 FStateTreeEvent Event;
213 Event.Tag = TAG_CHARACTER_STATE_ISSTUN_START;
214 CachedStateTreeComp->SendStateTreeEvent(Event);
215 }
216 }
217}
virtual bool IsDead() const
Definition CharacterBase.cpp:65
TObjectPtr< AAIController > CachedAIController
Definition EnemyCharacterBase.h:185
TObjectPtr< UStateTreeAIComponent > CachedStateTreeComp
Definition EnemyCharacterBase.h:188
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnDeath()

void AEnemyCharacter::OnDeath ( )
overrideprotectedvirtual

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

136{
137 Super::OnDeath();
138
139 // 스폰 사망 이벤트 방송
140
141}

◆ OnHitReactMontageEnded()

void AEnemyCharacter::OnHitReactMontageEnded ( UAnimMontage *  Montage,
bool  bInterrupted 
)
overrideprotectedvirtual

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

160{
161 // 새 히트 몽타주에 의해 끊긴 경우
162 if (bInterrupted)
163 {
164 return;
165 }
166
168}
void TrySendStunEnd() const
Definition EnemyCharacter.cpp:219
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnHitStunTagChanged()

void AEnemyCharacter::OnHitStunTagChanged ( const FGameplayTag  CallbackTag,
int32  NewCount 
) const
protected
174{
175 LOG_INFO(LogCKAttribute, "OnHitStunTagChanged: NewCount=%d", NewCount);
176
177 if (NewCount == 0)
178 {
180 }
181}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnReturnToPool_Implementation()

void AEnemyCharacter::OnReturnToPool_Implementation ( )
overrideprotectedvirtual

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

126{
127 Super::OnReturnToPool_Implementation();
128
129 OnSpawnEnemyDead.Clear();
130}
FOnSpawnEnemyDead OnSpawnEnemyDead
Definition EnemyCharacterBase.h:159

◆ RotateHitSource()

void AEnemyCharacter::RotateHitSource ( const FVector &  HitFromLocation)
overrideprotectedvirtual

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

149{
150 Super::RotateHitSource(HitFromLocation);
151
152 // 컨트롤러 회전 동기화 (안 해주면 다음 틱에 회전이 원래 보고 있는 곳으로 돌아옴)
153 if (AController* CharController = GetController())
154 {
155 CharController->SetControlRotation(GetActorRotation());
156 }
157}

◆ TrySendStunEnd()

void AEnemyCharacter::TrySendStunEnd ( ) const
protected
220{
221 const bool bHasHitStunTag = ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISHITSTUN);
222
223 bool bMontagePlaying = false;
224
225 if (UAnimMontage* HitReactMontage = GetHitReactMontage())
226 {
227 UAnimInstance* Anim = GetMesh()->GetAnimInstance();
228 bMontagePlaying = Anim && Anim->Montage_IsPlaying(HitReactMontage);
229 }
230
231 if (bHasHitStunTag || bMontagePlaying)
232 {
233 return;
234 }
235
236 // 둘 다 끝남 → StateTree에 End 이벤트 발사
238 {
239 FStateTreeEvent Event;
240 Event.Tag = TAG_CHARACTER_STATE_ISSTUN_END;
241 CachedStateTreeComp->SendStateTreeEvent(Event);
242 }
243}
virtual UAnimMontage * GetHitReactMontage() const override
Definition EnemyCharacter.cpp:143
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UnbindCharacterDelegates()

void AEnemyCharacter::UnbindCharacterDelegates ( )
overrideprotectedvirtual

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

103{
104 if (ASC)
105 {
106 if (HitStunTagDelegateHandle.IsValid())
107 {
108 ASC->UnregisterGameplayTagEvent(HitStunTagDelegateHandle, TAG_CHARACTER_STATE_ISHITSTUN, EGameplayTagEventType::NewOrRemoved);
110 }
111
112 if (GEAppliedDelegateHandle.IsValid())
113 {
114 ASC->OnGameplayEffectAppliedDelegateToSelf.Remove(GEAppliedDelegateHandle);
116 }
117 }
118
119 Super::UnbindCharacterDelegates();
120}

멤버 데이터 문서화

◆ AICombatExitRadius

float AEnemyCharacter::AICombatExitRadius = 0.0f
protected

◆ AICombatRadius

float AEnemyCharacter::AICombatRadius = 0.0f
protected

◆ GEAppliedDelegateHandle

FDelegateHandle AEnemyCharacter::GEAppliedDelegateHandle
private

◆ HitStunTagDelegateHandle

FDelegateHandle AEnemyCharacter::HitStunTagDelegateHandle
private

◆ HpBar

TObjectPtr<UGASWidgetComponent> AEnemyCharacter::HpBar
protected

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