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

#include <MainPlayerCharacter.h>

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

Public 멤버 함수

 AMainPlayerCharacter (const FObjectInitializer &ObjectInitializer=FObjectInitializer::Get())
 
virtual void OnChargeBegin () override
 
virtual void OnChargeEnd () override
 
virtual void OnChargePhaseChanged (float RotSpeedMul) override
 
virtual void CacheAttackContext () override
 
virtual UChargeStateComponent * GetChargeStateComponent () const override
 
virtual bool HasTargetingTarget (ETargetingMode) override
 
UCameraZoomComponent * GetCameraDistanceComponent () const
 
UCameraTargetingComponent * GetPlayerTargetingComponent () const
 
void RespawnAtTransform (const FTransform &RespawnTransform)
 
FORCEINLINE UTargetingComponent * GetTargetingComponent () const
 
FORCEINLINE UPlayerMotionWarpingComponent * GetMotionWarpingComponent () const
 
FORCEINLINE FVector GetRawMovementInputDirection () const
 
FORCEINLINE UInputMappingContext * GetDefaultMappingContext () const
 
FORCEINLINE UPlayerMovementComponent * GetPlayerMovementComponent () const
 
FORCEINLINE UProjectileLauncherComponent * GetProjectileLauncherComponent () const
 
FORCEINLINE UWeaponLoadoutComponent * GetWeaponLoadoutComponent () const
 
FORCEINLINE FGameplayTag GetDefaultWeaponTag () const
 
FORCEINLINE USkeletalMeshComponent * GetWeaponMeshComponent () const
 
FORCEINLINE APlayerController * GetPlayerController () const
 
FORCEINLINE UCharacterGhostEffectComponent * GetCharacterGhostWarpEffectComponent () const
 
- ACharacterBase(으)로부터 상속된 Public 멤버 함수
 ACharacterBase (const FObjectInitializer &ObjectInitializer=FObjectInitializer::Get())
 
virtual bool IsDead () const
 
virtual void PlayDeadAnimation ()
 
bool IsStaggerImmune () const
 
virtual class UAbilitySystemComponent * GetAbilitySystemComponent () const override
 
FORCEINLINE FOnAbilitySystemReady & GetOnAbilitySystemReady ()
 
FORCEINLINE UKnockbackComponent * GetKnockbackComponent () const
 

Public 속성

const FPlayerExtendedDataPlayerExtendedData = nullptr
 

Protected 멤버 함수

virtual void SetupPlayerInputComponent (UInputComponent *PlayerInputComponent) override
 
virtual void PossessedBy (AController *NewController) override
 
virtual void PostInitializeComponents () override
 
virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
void InitializePlayerControllerDependencies (APlayerController *PlayerController)
 
void GASInputPressed (FGameplayTag InputTag)
 
void GASInputReleased (FGameplayTag InputTag)
 
FGameplayAbilitySpec * FindAbilitySpecByInputTag (const FGameplayTag &InputTag) const
 
void RotateCamera (const FInputActionValue &Value)
 
void OnMouseWheel (const FInputActionValue &Value)
 
void ToggleLockOn ()
 
void Move (const FInputActionValue &Value)
 
void OnMoveStarted (const FInputActionValue &Value)
 
bool CanMove () const
 
void OnTargetingChanged (bool bActive)
 
void ChangeAimState ()
 
void BeginChargeFacingTurn ()
 
void UpdateChargeFacingTurn ()
 
virtual void OnDeath ()
 
virtual void SetDead () override
 
virtual void InitializeAttributes () override
 
virtual void OnDamageTaken (const FDamageResultData &DamageResult) override
 
virtual UAnimMontage * GetHitReactMontage () const override
 
void ApplyDamageTakenEffect ()
 
void OnAnyGameplayEffectApplied (UAbilitySystemComponent *SourceASC, const FGameplayEffectSpec &Spec, FActiveGameplayEffectHandle)
 
bool RecordHitStun ()
 
void TriggerKnockDown (UAbilitySystemComponent *SourceASC, const FGameplayEffectSpec &Spec)
 
void ResetHitStunTimes ()
 
void OnHitStunTagChanged (const FGameplayTag CallbackTag, int32 NewCount)
 
- 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)
 
virtual void RotateHitSource (const FVector &HitFromLocation)
 
virtual void OnHitReactMontageEnded (UAnimMontage *Montage, bool bInterrupted)
 

Protected 속성

TObjectPtr< UPlayerMotionWarpingComponent > MotionWarpingComponent
 
TObjectPtr< UTargetingComponent > TargetingComponent
 
TObjectPtr< UPlayerMovementComponent > PlayerMovementComponent
 
TObjectPtr< UChargeStateComponent > ChargeStateComponent
 
TObjectPtr< UProjectileLauncherComponent > ProjectileLauncherComponent
 
TObjectPtr< UWeaponLoadoutComponent > WeaponLoadoutComponent
 
TObjectPtr< USkeletalMeshComponent > WeaponMesh
 
TObjectPtr< UCharacterGhostEffectComponent > CharacterGhostEffectComponent
 
TObjectPtr< UCharacterControlDataCharacterControlData
 
bool bPlayerControllerDependenciesInitialized = false
 
- ACharacterBase(으)로부터 상속된 Protected 속성
FOnAbilitySystemReady OnAbilitySystemReady
 
TObjectPtr< UAbilitySystemComponent > ASC
 
TObjectPtr< UKnockbackComponent > KnockbackComponent
 
TObjectPtr< UAudioEmitterComponent > AudioTagComponent
 

Private 속성

float LookSensitivity = 1.0f
 
bool bIsCharging = false
 
bool bIsLockedOn = false
 
float ChargeFacingTargetYaw = 0.0f
 
float ChargeFacingTurnTolerance = 1.0f
 
FTimerHandle ChargeFacingTurnTimerHandle
 
FVector RawMovementInputDirection = FVector::ZeroVector
 
uint64 RawMovementInputFrame = 0
 
TArray< double > RecentHitStunTimes
 
FDelegateHandle HitStunTagDelegateHandle
 
FDelegateHandle GEAppliedDelegateHandle
 

생성자 & 소멸자 문서화

◆ AMainPlayerCharacter()

AMainPlayerCharacter::AMainPlayerCharacter ( const FObjectInitializer &  ObjectInitializer = FObjectInitializer::Get())
43 : Super(ObjectInitializer.SetDefaultSubobjectClass<UPlayerMovementComponent>(CharacterMovementComponentName))
44{
45 //Player State 클래스에서 명시적으로 할당함.
46 ASC = nullptr;
47 PlayerMovementComponent = CastChecked<UPlayerMovementComponent>(GetCharacterMovement());
48 PlayerMovementComponent->BrakingDecelerationWalking = 800.0f;
49
50 CharacterGhostEffectComponent = CreateDefaultSubobject<UCharacterGhostEffectComponent>(TEXT("CharacterGhostEffectComponent"));
51 ProjectileLauncherComponent = CreateDefaultSubobject<UProjectileLauncherComponent>(TEXT("ProjectileLauncherComponent"));
52 MotionWarpingComponent = CreateDefaultSubobject<UPlayerMotionWarpingComponent>(TEXT("MotionWarpingComponent"));
53 WeaponLoadoutComponent = CreateDefaultSubobject<UWeaponLoadoutComponent>(TEXT("WeaponLoadoutComponent"));
54 ChargeStateComponent = CreateDefaultSubobject<UChargeStateComponent>(TEXT("ChargeStateComponent"));
55 TargetingComponent = CreateDefaultSubobject<UTargetingComponent>(TEXT("TargetingComponent"));
56 WeaponMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("WeaponMeshComponent"));
57
58 WeaponMesh->SetupAttachment(GetMesh());
59 WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
60 WeaponMesh->SetAnimationMode(EAnimationMode::AnimationBlueprint);
61 WeaponMesh->SetHiddenInGame(true);
62 WeaponMesh->SetReceivesDecals(false);
63
64 GetCharacterMovement()->bOrientRotationToMovement = true;
65 GetCapsuleComponent()->SetCollisionProfileName(CPROFILE_CKPLAYERCAPSULE);
66}
#define CPROFILE_CKPLAYERCAPSULE
Definition CK_Collision.h:15
TObjectPtr< UAbilitySystemComponent > ASC
Definition CharacterBase.h:80
TObjectPtr< UTargetingComponent > TargetingComponent
Definition MainPlayerCharacter.h:183
TObjectPtr< UProjectileLauncherComponent > ProjectileLauncherComponent
Definition MainPlayerCharacter.h:192
TObjectPtr< UWeaponLoadoutComponent > WeaponLoadoutComponent
Definition MainPlayerCharacter.h:195
TObjectPtr< USkeletalMeshComponent > WeaponMesh
Definition MainPlayerCharacter.h:198
TObjectPtr< UCharacterGhostEffectComponent > CharacterGhostEffectComponent
Definition MainPlayerCharacter.h:201
TObjectPtr< UPlayerMovementComponent > PlayerMovementComponent
Definition MainPlayerCharacter.h:186
TObjectPtr< UPlayerMotionWarpingComponent > MotionWarpingComponent
Definition MainPlayerCharacter.h:180
TObjectPtr< UChargeStateComponent > ChargeStateComponent
Definition MainPlayerCharacter.h:189

멤버 함수 문서화

◆ ApplyDamageTakenEffect()

void AMainPlayerCharacter::ApplyDamageTakenEffect ( )
protected
772{
774 {
775 return;
776 }
777
778 const FGameplayEffectContextHandle EffectContext = ASC->MakeEffectContext();
779 const FGameplayEffectSpecHandle SpecHandle = ASC->MakeOutgoingSpec(PlayerExtendedData->DamageTakenEffectClass,1.0f, EffectContext);
780
781 if (SpecHandle.IsValid() == false)
782 {
783 return;
784 }
785
786 ASC->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());
787}
const FPlayerExtendedData * PlayerExtendedData
Definition MainPlayerCharacter.h:176
TSubclassOf< UGameplayEffect > DamageTakenEffectClass
Definition CharacterControlData.h:122
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BeginChargeFacingTurn()

void AMainPlayerCharacter::BeginChargeFacingTurn ( )
protected
150{
151 UCharacterMovementComponent* MovementComp = GetCharacterMovement();
152 if (MovementComp == nullptr)
153 {
154 return;
155 }
156
157 MovementComp->bOrientRotationToMovement = false;
158 MovementComp->bUseControllerDesiredRotation = false;
159
160 // 락온이면 타겟 방향, 아니면 카메라 정면
161 float TargetYaw = GetActorRotation().Yaw;
162 bool bResolved = false;
163
164 if (bIsLockedOn)
165 {
166 const UCameraTargetingComponent* TargetingComp = GetPlayerTargetingComponent();
167 const AActor* TargetActor = ITargetableInterface::AsActor(TargetingComp ? TargetingComp->GetCurrentTarget().GetInterface() : nullptr);
168 const FVector ToTarget = TargetActor ? TargetActor->GetActorLocation() - GetActorLocation() : FVector::ZeroVector;
169
170 if (!ToTarget.IsNearlyZero())
171 {
172 bResolved = true;
173 TargetYaw = ToTarget.Rotation().Yaw;
174 }
175 }
176
177 if (!bResolved)
178 {
179 if (const AController* OwnerController = GetController())
180 {
181 TargetYaw = OwnerController->GetControlRotation().Yaw;
182 }
183 }
184
185 ChargeFacingTargetYaw = TargetYaw;
186
187 if (FMath::Abs(FRotator::NormalizeAxis(ChargeFacingTargetYaw - GetActorRotation().Yaw)) <= ChargeFacingTurnTolerance)
188 {
189 return;
190 }
191
192 if (UWorld* World = GetWorld())
193 {
194 World->GetTimerManager().SetTimer(ChargeFacingTurnTimerHandle, this, &ThisClass::UpdateChargeFacingTurn, 0.01f, true);
195 }
196}
FTimerHandle ChargeFacingTurnTimerHandle
Definition MainPlayerCharacter.h:217
bool bIsLockedOn
Definition MainPlayerCharacter.h:213
float ChargeFacingTurnTolerance
Definition MainPlayerCharacter.h:216
float ChargeFacingTargetYaw
Definition MainPlayerCharacter.h:215
UCameraTargetingComponent * GetPlayerTargetingComponent() const
Definition MainPlayerCharacter.cpp:937
static AActor * AsActor(ITargetableInterface *Interface)
Definition TargetableInterface.cpp:24
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ BeginPlay()

void AMainPlayerCharacter::BeginPlay ( )
overrideprotectedvirtual
258{
259 Super::BeginPlay();
260
261 InitializePlayerControllerDependencies(Cast<APlayerController>(GetController()));
262}
void InitializePlayerControllerDependencies(APlayerController *PlayerController)
Definition MainPlayerCharacter.cpp:292
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ CacheAttackContext()

void AMainPlayerCharacter::CacheAttackContext ( )
overridevirtual

IAttackableInterface를 구현.

120{
121 const FVector Velocity = PlayerMovementComponent->Velocity;
122 const FVector SurfaceVelocity(Velocity.X, Velocity.Y, 0.0f);
123 PlayerMovementComponent->SetExtraVelocity(SurfaceVelocity.GetClampedToMaxSize2D(PlayerMovementComponent->GetWalkSpeed()));
124}

◆ CanMove()

bool AMainPlayerCharacter::CanMove ( ) const
protected
600{
601 return ASC && ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISBLOCKMOVEMENT) == false;
602}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ChangeAimState()

void AMainPlayerCharacter::ChangeAimState ( )
protected
135{
136 // 차지 또는 락온 상태에서는 린(Lean)을 비활성화
137 const bool bShouldDisableLean = bIsCharging || bIsLockedOn;
138 UPlayerMovementComponent* PlayerMovement = GetPlayerMovementComponent();
139
140 if (PlayerMovement == nullptr)
141 {
142 return;
143 }
144
145 PlayerMovement->SetLeaningEnabled(bShouldDisableLean == false);
146}
bool bIsCharging
Definition MainPlayerCharacter.h:212
FORCEINLINE UPlayerMovementComponent * GetPlayerMovementComponent() const
Definition MainPlayerCharacter.h:84
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EndPlay()

void AMainPlayerCharacter::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprotectedvirtual
266{
267 if (ASC)
268 {
269 if (const UPlayerAttributeSet* CurrentAttributeSet = ASC->GetSet<UPlayerAttributeSet>())
270 {
271 CurrentAttributeSet->OnDeathDelegate.RemoveDynamic(this, &ThisClass::OnDeath);
272 CurrentAttributeSet->OnDamageDelegate.RemoveAll(this);
273 }
274
275 if (HitStunTagDelegateHandle.IsValid())
276 {
277 ASC->UnregisterGameplayTagEvent(HitStunTagDelegateHandle, TAG_CHARACTER_STATE_ISHITSTUN, EGameplayTagEventType::NewOrRemoved);
279 }
280
281 if (GEAppliedDelegateHandle.IsValid())
282 {
283 ASC->OnGameplayEffectAppliedDelegateToSelf.Remove(GEAppliedDelegateHandle);
285 }
286 }
287
288 Super::EndPlay(EndPlayReason);
289}
FDelegateHandle GEAppliedDelegateHandle
Definition MainPlayerCharacter.h:224
FDelegateHandle HitStunTagDelegateHandle
Definition MainPlayerCharacter.h:223
Definition PlayerAttributeSet.h:13

◆ FindAbilitySpecByInputTag()

FGameplayAbilitySpec * AMainPlayerCharacter::FindAbilitySpecByInputTag ( const FGameplayTag &  InputTag) const
protected
408{
409 if (ASC == nullptr || InputTag.IsValid() == false)
410 {
411 return nullptr;
412 }
413
414 for (const FGameplayAbilitySpec& Spec : ASC->GetActivatableAbilities())
415 {
416 FGameplayTagContainer Container = Spec.GetDynamicSpecSourceTags();
417
418 if (Container.IsEmpty())
419 {
420 continue;
421 }
422
423 if (Container.HasTagExact(InputTag))
424 {
425 return ASC->FindAbilitySpecFromHandle(Spec.Handle);
426 }
427 }
428
429 return nullptr;
430}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GASInputPressed()

void AMainPlayerCharacter::GASInputPressed ( FGameplayTag  InputTag)
protected
434{
435 if (ASC == nullptr || ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISBLOCKINPUT))
436 {
437 return;
438 }
439
440 FGameplayAbilitySpec* Spec = FindAbilitySpecByInputTag(InputTag);
441
442 if (Spec == nullptr)
443 {
444 return;
445 }
446
447 Spec->InputPressed = true;
448
449 if (Spec->IsActive())
450 {
451 ASC->AbilitySpecInputPressed(*Spec);
452 }
453 else
454 {
455 ASC->TryActivateAbility(Spec->Handle);
456 }
457}
FGameplayAbilitySpec * FindAbilitySpecByInputTag(const FGameplayTag &InputTag) const
Definition MainPlayerCharacter.cpp:407
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GASInputReleased()

void AMainPlayerCharacter::GASInputReleased ( FGameplayTag  InputTag)
protected
461{
462 FGameplayAbilitySpec* Spec = FindAbilitySpecByInputTag(InputTag);
463
464 if (Spec == nullptr)
465 {
466 return;
467 }
468
469 Spec->InputPressed = false;
470
471 if (Spec->IsActive())
472 {
473 ASC->AbilitySpecInputReleased(*Spec);
474 }
475}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetCameraDistanceComponent()

UCameraZoomComponent * AMainPlayerCharacter::GetCameraDistanceComponent ( ) const
920{
921 const APlayerController* PlayerController = Cast<APlayerController>(GetController());
922
923 if (PlayerController == nullptr || PlayerController->PlayerCameraManager == nullptr)
924 {
925 return nullptr;
926 }
927
928 if (const AGameCameraManager* CameraManager = Cast<AGameCameraManager>(PlayerController->PlayerCameraManager))
929 {
930 return CameraManager->GetCameraZoomComponent();
931 }
932
933 return PlayerController->PlayerCameraManager->FindComponentByClass<UCameraZoomComponent>();
934}
Definition GameCameraManager.h:28
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetCharacterGhostWarpEffectComponent()

FORCEINLINE UCharacterGhostEffectComponent * AMainPlayerCharacter::GetCharacterGhostWarpEffectComponent ( ) const
inline
115 {
117 }

◆ GetChargeStateComponent()

UChargeStateComponent * AMainPlayerCharacter::GetChargeStateComponent ( ) const
overridevirtual

IChargeInterface를 구현.

220{
222}

◆ GetDefaultMappingContext()

FORCEINLINE UInputMappingContext * AMainPlayerCharacter::GetDefaultMappingContext ( ) const
inline
80 {
82 }
TObjectPtr< UInputMappingContext > DefaultMappingContext
Definition CharacterControlData.h:87

◆ GetDefaultWeaponTag()

FORCEINLINE FGameplayTag AMainPlayerCharacter::GetDefaultWeaponTag ( ) const
inline
100 {
102 }
FGameplayTag DefaultWeaponTag
Definition CharacterControlData.h:135

◆ GetHitReactMontage()

UAnimMontage * AMainPlayerCharacter::GetHitReactMontage ( ) const
overrideprotectedvirtual

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

754{
755 UWeaponLoadoutComponent* Loadout = GetWeaponLoadoutComponent();
756 if (Loadout == nullptr)
757 {
758 return nullptr;
759 }
760
761 const UWeaponDefinition* Definition = Loadout->GetCurrentDefinition();
762 if (Definition == nullptr)
763 {
764 return nullptr;
765 }
766
767 const bool bAttackIdle = ASC && ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_COMBAT_ATTACKIDLE);
768 return bAttackIdle ? Definition->HitReactMontage_AttackIdle : Definition->HitReactMontage_Idle;
769}
FORCEINLINE UWeaponLoadoutComponent * GetWeaponLoadoutComponent() const
Definition MainPlayerCharacter.h:94
Definition WeaponDefinition.h:77
TObjectPtr< UAnimMontage > HitReactMontage_AttackIdle
Definition WeaponDefinition.h:112
TObjectPtr< UAnimMontage > HitReactMontage_Idle
Definition WeaponDefinition.h:108
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetMotionWarpingComponent()

FORCEINLINE UPlayerMotionWarpingComponent * AMainPlayerCharacter::GetMotionWarpingComponent ( ) const
inline
69 {
71 }

◆ GetPlayerController()

FORCEINLINE APlayerController * AMainPlayerCharacter::GetPlayerController ( ) const
inline
110 {
111 return Controller ? Cast<APlayerController>(Controller) : nullptr;
112 }

◆ GetPlayerMovementComponent()

FORCEINLINE UPlayerMovementComponent * AMainPlayerCharacter::GetPlayerMovementComponent ( ) const
inline
85 {
87 }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetPlayerTargetingComponent()

UCameraTargetingComponent * AMainPlayerCharacter::GetPlayerTargetingComponent ( ) const
938{
939 const APlayerController* PlayerController = Cast<APlayerController>(GetController());
940
941 if (PlayerController == nullptr || PlayerController->PlayerCameraManager == nullptr)
942 {
943 return nullptr;
944 }
945
946 if (const AGameCameraManager* CameraManager = Cast<AGameCameraManager>(PlayerController->PlayerCameraManager))
947 {
948 return CameraManager->GetPlayerTargetingComponent();
949 }
950
951 return PlayerController->PlayerCameraManager->FindComponentByClass<UCameraTargetingComponent>();
952}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetProjectileLauncherComponent()

FORCEINLINE UProjectileLauncherComponent * AMainPlayerCharacter::GetProjectileLauncherComponent ( ) const
inline
90 {
92 }

◆ GetRawMovementInputDirection()

FORCEINLINE FVector AMainPlayerCharacter::GetRawMovementInputDirection ( ) const
inline

이동이 막혀 있어도 갱신되는 카메라 기준 이동 입력 방향. 최근 프레임 입력이 없으면 ZeroVector.

75 {
76 return GFrameCounter - RawMovementInputFrame <= 1 ? RawMovementInputDirection : FVector::ZeroVector;
77 }
uint64 RawMovementInputFrame
Definition MainPlayerCharacter.h:220
FVector RawMovementInputDirection
Definition MainPlayerCharacter.h:219

◆ GetTargetingComponent()

FORCEINLINE UTargetingComponent * AMainPlayerCharacter::GetTargetingComponent ( ) const
inline
64 {
65 return TargetingComponent;
66 }

◆ GetWeaponLoadoutComponent()

FORCEINLINE UWeaponLoadoutComponent * AMainPlayerCharacter::GetWeaponLoadoutComponent ( ) const
inline
95 {
97 }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetWeaponMeshComponent()

FORCEINLINE USkeletalMeshComponent * AMainPlayerCharacter::GetWeaponMeshComponent ( ) const
inline
105 {
106 return WeaponMesh;
107 }

◆ HasTargetingTarget()

bool AMainPlayerCharacter::HasTargetingTarget ( ETargetingMode  TargetingMode)
overridevirtual

IAttackableInterface를 구현.

226{
227 if (TargetingMode == ETargetingMode::SoftTargeting)
228 {
229 return TargetingComponent->GetSoftLockTarget() != nullptr;
230 }
231
232 if (TargetingMode == ETargetingMode::HardTargeting)
233 {
234 return TargetingComponent->GetHardLockTarget() != nullptr;
235 }
236
237 LOG_ERROR(LogCK, "지금 당장 김기백씨를 불러야된다니께유. ");
238 return false;
239}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40

◆ InitializeAttributes()

void AMainPlayerCharacter::InitializeAttributes ( )
overrideprotectedvirtual
700{
701 AMainPlayerState* PS = GetPlayerState<AMainPlayerState>();
702
703 if (!ASC || !CharacterControlData || !CharacterControlData->StatTable || !PS)
704 {
705 return;
706 }
707
708 UPlayerAttributeSet* PlayerAttributeSet = PS->GetPlayerAttributeSet();
709
710 FPlayerStatTableRow* StatRow = CharacterControlData->StatTable->FindRow<FPlayerStatTableRow>(CharacterControlData->StatRowName, TEXT("PlayerStatContext"));
711 if (!StatRow)
712 {
713 return;
714 }
715
716 if (!PlayerAttributeSet)
717 {
718 return;
719 }
720
721 // Base 공통 스탯 초기화
722 PlayerAttributeSet->InitBaseStats
723 (
724 StatRow->Character_Hp,
725 StatRow->Character_Move_Speed,
726 StatRow->Character_Attack,
727 StatRow->Character_Attack_Speed,
729 );
730
731 // MoveSpeed 어트리뷰트를 실제 이동 속도로 반영 (이후 변경은 PostGameplayEffectExecute가 동기화)
732 GetCharacterMovement()->MaxWalkSpeed = PlayerAttributeSet->GetMoveSpeed();
733
734 // Player 전용 스탯 초기화
735 PlayerAttributeSet->InitPlayerStats
736 (
737 StatRow->Character_Critical,
739 );
740}
TObjectPtr< UCharacterControlData > CharacterControlData
Definition MainPlayerCharacter.h:204
Definition MainPlayerState.h:23
FORCEINLINE UPlayerAttributeSet * GetPlayerAttributeSet() const
Definition MainPlayerState.h:30
void InitBaseStats(float InMaxHealth, float InMoveSpeed, float InAttack, float InAttackSpeed, float InKnockbackResistance=0.0f, float InCooldownMultiplier=1.0f)
Definition BaseAttributeSet.cpp:22
void InitPlayerStats(float InCritical, float InCriticalDmg)
Definition PlayerAttributeSet.cpp:17
Definition StatTable.h:15
float Character_Attack_Speed
Definition StatTable.h:29
float Character_Move_Speed
Definition StatTable.h:32
float Character_Knockback_Resistance
Definition StatTable.h:41
float Character_Critical
Definition StatTable.h:35
float Character_Hp
Definition StatTable.h:23
float Character_Attack
Definition StatTable.h:26
float Character_Critical_Dmg
Definition StatTable.h:38
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InitializePlayerControllerDependencies()

void AMainPlayerCharacter::InitializePlayerControllerDependencies ( APlayerController *  PlayerController)
protected
293{
295 {
296 return;
297 }
298
299 if (PlayerController == nullptr || CharacterControlData == nullptr || PlayerExtendedData == nullptr || PlayerExtendedData->DefaultMappingContext == nullptr)
300 {
301 return;
302 }
303
304 ULocalPlayer* LocalPlayer = PlayerController->GetLocalPlayer();
305
306 if (LocalPlayer == nullptr)
307 {
308 return;
309 }
310
311 if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(LocalPlayer))
312 {
313 Subsystem->AddMappingContext(PlayerExtendedData->DefaultMappingContext, 0);
314 }
315
316 if (UCameraTargetingComponent* TargetingComp = GetPlayerTargetingComponent())
317 {
318 TargetingComp->OnTargetingActiveChanged.AddUObject(this, &ThisClass::OnTargetingChanged);
319 }
320
322}
bool bPlayerControllerDependenciesInitialized
Definition MainPlayerCharacter.h:207
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Move()

void AMainPlayerCharacter::Move ( const FInputActionValue &  Value)
protected
540{
541 FVector2D MovementVector = Value.Get<FVector2D>();
542
543 float InputSizeSquared = MovementVector.SquaredLength();
544 float MovementVectorSize;
545
546 if (InputSizeSquared > 1.0f)
547 {
548 MovementVector.Normalize();
549 MovementVectorSize = 1.0f;
550 }
551 else
552 {
553 MovementVectorSize = FMath::Sqrt(InputSizeSquared);
554 }
555
556 AMainPlayerController* PlayerController = Cast<AMainPlayerController>(Controller);
557 check(PlayerController);
558
559 AGameCameraManager* CameraManager = Cast<AGameCameraManager>(PlayerController->PlayerCameraManager);
560 check(CameraManager);
561
562 const FRotator MovementInputRotation = CameraManager->GetMovementInputRotation();
563 const FRotationMatrix RotationMatrix = FRotationMatrix(MovementInputRotation);
564 const FVector ForwardDirection = RotationMatrix.GetUnitAxis(EAxis::X);
565 const FVector RightDirection = RotationMatrix.GetUnitAxis(EAxis::Y);
566
567 // 이동이 막혀 있어도 워프 조향 등에서 쓸 수 있도록 입력 방향은 항상 기록한다.
568 RawMovementInputDirection = (ForwardDirection * MovementVector.Y + RightDirection * MovementVector.X).GetSafeNormal();
569 RawMovementInputFrame = GFrameCounter;
570
571 if (CanMove() == false)
572 {
573 return;
574 }
575
576 if (MovementVectorSize > 0.0f)
577 {
578 PlayerMovementComponent->UpdateMovementInputRotation(MovementInputRotation);
579 }
580
581 // 최종 이동 적용
582 AddMovementInput(ForwardDirection, MovementVector.Y * MovementVectorSize);
583 AddMovementInput(RightDirection, MovementVector.X * MovementVectorSize);
584}
FRotator GetMovementInputRotation() const
Definition GameCameraManager.cpp:437
bool CanMove() const
Definition MainPlayerCharacter.cpp:599
Definition MainPlayerController.h:16
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnAnyGameplayEffectApplied()

void AMainPlayerCharacter::OnAnyGameplayEffectApplied ( UAbilitySystemComponent *  SourceASC,
const FGameplayEffectSpec &  Spec,
FActiveGameplayEffectHandle   
)
protected
791{
792 // 죽거나 경면이면 실행 X
793 if (ASC == nullptr || IsDead() || IsStaggerImmune())
794 {
795 return;
796 }
797
798 FGameplayTagContainer AssetTags;
799 Spec.GetAllAssetTags(AssetTags);
800
801 const bool bIsKnockDownEffect = AssetTags.HasTag(TAG_EVENT_PLAYER_KNOCKDOWN);
802 const bool bIsHitStunEffect = Spec.Def && Spec.Def->GetGrantedTags().HasTag(TAG_CHARACTER_STATE_ISHITSTUN);
803
804 if (bIsKnockDownEffect == false && bIsHitStunEffect == false)
805 {
806 return;
807 }
808
809 // 강 경직 GE
810 if (bIsKnockDownEffect)
811 {
812 TriggerKnockDown(SourceASC, Spec);
813 return;
814 }
815
816 // 강 경직 중인 경우 pass
817 if (ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISKNOCKEDDOWN))
818 {
819 return;
820 }
821
822 // 약 경직 처리
823
824 // HitToKnockDownThreshold 이상일 경우 강 경직 실행
825 if (RecordHitStun())
826 {
827 TriggerKnockDown(SourceASC, Spec);
828 return;
829 }
830
831 ASC->CancelAllAbilities();
832
833 if (UCharacterMovementComponent* MovementComponent = GetCharacterMovement())
834 {
835 MovementComponent->StopMovementImmediately();
836 }
837
838 AActor* SourceActor = Spec.GetContext().GetEffectCauser();
839 if (IsValid(SourceActor) == false && IsValid(SourceASC))
840 {
841 SourceActor = SourceASC->GetAvatarActor();
842 }
843
844 PlayHitReaction(SourceActor);
845}
bool IsStaggerImmune() const
Definition CharacterBase.cpp:86
virtual bool IsDead() const
Definition CharacterBase.cpp:65
void PlayHitReaction(AActor *Attacker)
Definition CharacterBase.cpp:121
bool RecordHitStun()
Definition MainPlayerCharacter.cpp:847
void TriggerKnockDown(UAbilitySystemComponent *SourceASC, const FGameplayEffectSpec &Spec)
Definition MainPlayerCharacter.cpp:878
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnChargeBegin()

void AMainPlayerCharacter::OnChargeBegin ( )
overridevirtual

IChargeInterface를 구현.

70{
71 bIsCharging = true;
73
74 if (ASC)
75 {
76 ASC->AddLooseGameplayTag(TAG_CHARACTER_STATE_ISBLOCKMOVEMENT);
77 }
78
79 if (UCharacterMovementComponent* MovementComp = GetCharacterMovement())
80 {
81 MovementComp->StopMovementImmediately();
82 }
83
85}
void BeginChargeFacingTurn()
Definition MainPlayerCharacter.cpp:149
void ChangeAimState()
Definition MainPlayerCharacter.cpp:134
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnChargeEnd()

void AMainPlayerCharacter::OnChargeEnd ( )
overridevirtual

IChargeInterface를 구현.

89{
90 bIsCharging = false;
91 LookSensitivity = 1.0f;
93
94 if (UWorld* World = GetWorld())
95 {
96 World->GetTimerManager().ClearTimer(ChargeFacingTurnTimerHandle);
97 }
98
99 // 차지 종료 — 기본 이동 방향 회전으로 복귀
100 if (UCharacterMovementComponent* MovementComp = GetCharacterMovement())
101 {
102 MovementComp->bOrientRotationToMovement = true;
103 MovementComp->bUseControllerDesiredRotation = false;
104 }
105
106 if (ASC)
107 {
108 ASC->RemoveLooseGameplayTag(TAG_CHARACTER_STATE_ISBLOCKMOVEMENT);
109 }
110}
float LookSensitivity
Definition MainPlayerCharacter.h:210
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnChargePhaseChanged()

void AMainPlayerCharacter::OnChargePhaseChanged ( float  RotSpeedMul)
overridevirtual

IChargeInterface를 구현.

114{
115 LookSensitivity = RotSpeedMul;
116}

◆ OnDamageTaken()

void AMainPlayerCharacter::OnDamageTaken ( const FDamageResultData DamageResult)
overrideprotectedvirtual

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

743{
744 if (DamageResult.TargetActor != this || IsDead())
745 {
746 return;
747 }
748
750}
void ApplyDamageTakenEffect()
Definition MainPlayerCharacter.cpp:771
TObjectPtr< AActor > TargetActor
Definition BaseAttributeSet.h:19
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnDeath()

void AMainPlayerCharacter::OnDeath ( )
protectedvirtual
606{
607 SetDead();
608
609 const APlayerController* PlayerController = Cast<APlayerController>(GetController());
610
611 if (PlayerController == nullptr || PlayerController->GetLocalPlayer() == nullptr)
612 {
613 LOG_ERROR(LogCKPlayer, "%s를 가져올 수 없습니다. ", NAMEOF(APlayerController));
614 return;
615 }
616
617 UPlayerManagementSubsystem* PlayerManagement = PlayerController->GetLocalPlayer()->GetSubsystem<UPlayerManagementSubsystem>();
618
619 if (PlayerManagement == nullptr)
620 {
621 LOG_ERROR(LogCKPlayer, "%s를 가져올 수 없습니다. ", NAMEOF(UPlayerManagementSubsystem));
622 return;
623 }
624
625 PlayerManagement->HandlePlayerDeath(this);
626}
#define NAMEOF(Type)
Definition CK_UE.h:30
virtual void SetDead() override
Definition MainPlayerCharacter.cpp:629
Definition PlayerManagementSubsystem.h:42
bool HandlePlayerDeath(AActor *PlayerActor)
Definition PlayerManagementSubsystem.cpp:316
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnHitStunTagChanged()

void AMainPlayerCharacter::OnHitStunTagChanged ( const FGameplayTag  CallbackTag,
int32  NewCount 
)
protected
901{
902 UPlayerMovementComponent* RotationComponent = GetPlayerMovementComponent();
903
904 if (RotationComponent == nullptr)
905 {
906 return;
907 }
908
909 if (NewCount > 0)
910 {
911 RotationComponent->BeginManualRotation();
912 }
913 else
914 {
915 RotationComponent->EndManualRotation();
916 }
917}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnMouseWheel()

void AMainPlayerCharacter::OnMouseWheel ( const FInputActionValue &  Value)
protected
506{
507 const float WheelValue = Value.Get<float>();
508
509 UCameraTargetingComponent* CamTargetingComponent = GetPlayerTargetingComponent();
510
511 if (CamTargetingComponent && CamTargetingComponent->HasTarget())
512 {
513 CamTargetingComponent->CycleTarget(WheelValue);
514 }
515 else if (UCameraZoomComponent* DistanceComponent = GetCameraDistanceComponent())
516 {
517 DistanceComponent->AdjustDistance(WheelValue);
518 }
519 else
520 {
521 LOG_WARNING(LogCK, "흑흑 나는 아무것도 조종할 수 없어.. ㅋㅋㅋㅋㅋㅋㅋ");
522 }
523}
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
UCameraZoomComponent * GetCameraDistanceComponent() const
Definition MainPlayerCharacter.cpp:919
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnMoveStarted()

void AMainPlayerCharacter::OnMoveStarted ( const FInputActionValue &  Value)
protected
588{
589 if (CanMove() == false)
590 {
591 return;
592 }
593
594 FGameplayEventData Payload;
595 UAbilitySystemBlueprintLibrary::SendGameplayEventToActor(this, TAG_EVENT_INPUT_MOVE, Payload);
596}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnTargetingChanged()

void AMainPlayerCharacter::OnTargetingChanged ( bool  bActive)
protected
128{
129 bIsLockedOn = bActive;
131}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ PossessedBy()

void AMainPlayerCharacter::PossessedBy ( AController *  NewController)
overrideprotectedvirtual
326{
327 Super::PossessedBy(NewController);
328
329 AMainPlayerState* GASPS = GetPlayerState<AMainPlayerState>();
330
331 if (GASPS == nullptr)
332 {
333 return;
334 }
335
337 ASC->InitAbilityActorInfo(GASPS, this);
338 ASC->GetGameplayAttributeValueChangeDelegate(UBaseAttributeSet::GetMoveSpeedAttribute()).AddUObject(this, &ThisClass::OnMoveSpeedChanged);
339
341
342 for (const auto& StartAbility : CharacterControlData->StartAbilities)
343 {
344 FGameplayAbilitySpec StartSpec(StartAbility, 1, INDEX_NONE, this);
345 ASC->GiveAbility(StartSpec);
346 }
347
348 checkf(PlayerExtendedData, TEXT("%s가 nullptr입니다. "), NAMEOF_VAR(PlayerExtendedData));
349
350 for (const auto& StartInputAbility : PlayerExtendedData->StartInputAbilities)
351 {
352 const FGameplayTag& InputTag = StartInputAbility.Key;
353
354 if (!ensureAlwaysMsgf(InputTag.IsValid(), TEXT("StartInputAbilities 잘못된 엔트리. 스킵.")))
355 {
356 continue;
357 }
358
359 FGameplayAbilitySpec StartSpec(StartInputAbility.Value, 1, INDEX_NONE, this);
360 StartSpec.GetDynamicSpecSourceTags().AddTag(InputTag);
361 ASC->GiveAbility(StartSpec);
362 }
363
364 if (const UPlayerAttributeSet* CurrentAttributeSet = ASC->GetSet<UPlayerAttributeSet>())
365 {
366 CurrentAttributeSet->OnDeathDelegate.AddDynamic(this, &ThisClass::OnDeath);
367 CurrentAttributeSet->OnDamageDelegate.AddUObject(this, &ThisClass::OnDamageTaken);
368 }
369
370 HitStunTagDelegateHandle = ASC->RegisterGameplayTagEvent(TAG_CHARACTER_STATE_ISHITSTUN, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &ThisClass::OnHitStunTagChanged);
371 if (GEAppliedDelegateHandle.IsValid() == false)
372 {
373 GEAppliedDelegateHandle = ASC->OnGameplayEffectAppliedDelegateToSelf.AddUObject(this, &ThisClass::OnAnyGameplayEffectApplied);
374 }
375
376 InitializePlayerControllerDependencies(Cast<APlayerController>(NewController));
377
378 OnAbilitySystemReady.Broadcast(ASC);
379}
#define NAMEOF_VAR(Expr)
Definition CK_UE.h:34
FOnAbilitySystemReady OnAbilitySystemReady
Definition CharacterBase.h:77
virtual void InitializeAttributes() override
Definition MainPlayerCharacter.cpp:699
virtual UAbilitySystemComponent * GetAbilitySystemComponent() const override
Definition MainPlayerState.cpp:20
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ PostInitializeComponents()

void AMainPlayerCharacter::PostInitializeComponents ( )
overrideprotectedvirtual
243{
244 Super::PostInitializeComponents();
245
247 {
249 }
250 else
251 {
252 LOG_WARNING(LogCK, "%s가 없습니다. 의도한 사항이 맞습니까?", NAMEOF(UCharacterControlData));
253 }
254}
Definition CharacterControlData.h:182
Definition CharacterControlData.h:82

◆ RecordHitStun()

bool AMainPlayerCharacter::RecordHitStun ( )
protected
848{
849 if (PlayerExtendedData == nullptr)
850 {
851 return false;
852 }
853
854 const float KnockDownWindow = PlayerExtendedData->HitToKnockDownWindow;
855 const int32 KnockDownThreshold = PlayerExtendedData->HitToKnockDownThreshold;
856
857 if (KnockDownWindow <= KINDA_SMALL_NUMBER)
858 {
859 return false;
860 }
861
862 const double CurrentTime = GetWorld()->GetTimeSeconds();
863 RecentHitStunTimes.RemoveAll([CurrentTime, KnockDownWindow](const double HitTime)
864 {
865 return CurrentTime - HitTime > KnockDownWindow;
866 });
867
868 RecentHitStunTimes.Add(CurrentTime);
869
870 if (RecentHitStunTimes.Num() < KnockDownThreshold)
871 {
872 return false;
873 }
874
875 return true;
876}
TArray< double > RecentHitStunTimes
Definition MainPlayerCharacter.h:221
float HitToKnockDownWindow
Definition CharacterControlData.h:126
int32 HitToKnockDownThreshold
Definition CharacterControlData.h:130
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ResetHitStunTimes()

void AMainPlayerCharacter::ResetHitStunTimes ( )
protected
896{
897 RecentHitStunTimes.Reset();
898}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RespawnAtTransform()

void AMainPlayerCharacter::RespawnAtTransform ( const FTransform &  RespawnTransform)
646{
648
649 if (UCameraTargetingComponent* CamTargetingComponent = GetPlayerTargetingComponent())
650 {
651 CamTargetingComponent->ReleaseTargeting();
652 }
653
654 bIsCharging = false;
655 bIsLockedOn = false;
656 LookSensitivity = 1.0f;
657
658 if (UWorld* World = GetWorld())
659 {
660 World->GetTimerManager().ClearTimer(ChargeFacingTurnTimerHandle);
661 }
662
663 if (ASC)
664 {
665 ASC->CancelAllAbilities();
666 ASC->RemoveAllGameplayCues();
667 ASC->SetLooseGameplayTagCount(TAG_CHARACTER_STATE_ISDEAD, 0);
668 }
669
670 if (UCapsuleComponent* CapsuleComp = GetCapsuleComponent())
671 {
672 CapsuleComp->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
673 CapsuleComp->SetCollisionProfileName(CPROFILE_CKPLAYERCAPSULE);
674 }
675
676 SetActorLocationAndRotation(RespawnTransform.GetLocation(), RespawnTransform.Rotator(), false, nullptr, ETeleportType::TeleportPhysics);
677
678 if (UCharacterMovementComponent* MovementComp = GetCharacterMovement())
679 {
680 MovementComp->StopMovementImmediately();
681 MovementComp->SetMovementMode(MOVE_Walking);
682 MovementComp->bOrientRotationToMovement = true;
683 MovementComp->bUseControllerDesiredRotation = false;
684 }
685
687
688 if (APlayerController* PlayerController = Cast<APlayerController>(GetController()))
689 {
690 EnableInput(PlayerController);
691 }
692 else
693 {
694 LOG_ERROR(LogCK, "%s로 형변환할 수 없습니다. ", NAMEOF(APlayerController));
695 }
696}
void ResetHitStunTimes()
Definition MainPlayerCharacter.cpp:895
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ RotateCamera()

void AMainPlayerCharacter::RotateCamera ( const FInputActionValue &  Value)
protected
479{
480 // 카메라 회전은 입력 차단 상태(IsBlockInput)에서만 막는다.
481 // 차지 중에는 이동(IsBlockMovement)만 막고 카메라는 계속 조작 가능 — 캐릭터가 카메라 정면을 따라 회전한다.
482 if (ASC && ASC->HasMatchingGameplayTag(TAG_CHARACTER_STATE_ISBLOCKINPUT))
483 {
484 return;
485 }
486
487 // 락온 중에는 마우스 회전을 무시 (LookOn 컴포넌트가 컨트롤러 회전을 직접 보간)
488 const UCameraTargetingComponent* CamTargetingComponent = GetPlayerTargetingComponent();
489
490 if (CamTargetingComponent && CamTargetingComponent->IsTargeting())
491 {
492 return;
493 }
494
495 FVector2D ScaledValue = Value.Get<FVector2D>() * LookSensitivity;
496
498 const float Y = SettingsRuntime.bInvertYAxis ? -ScaledValue.Y : ScaledValue.Y;
499
500 this->AddControllerYawInput(ScaledValue.X * SettingsRuntime.MouseXSensitivity);
501 this->AddControllerPitchInput(Y * SettingsRuntime.MouseYSensitivity);
502}
const FGlobalUserSettingsRuntime & GetGlobalUserSettingsRuntime()
Definition GlobalUserSettingsRuntime.cpp:24
Definition GlobalUserSettingsRuntime.h:5
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetDead()

void AMainPlayerCharacter::SetDead ( )
overrideprotectedvirtual

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

630{
632 Super::SetDead();
633
634 if (APlayerController* PlayerController = Cast<APlayerController>(GetController()))
635 {
636 DisableInput(PlayerController);
637 }
638 else
639 {
640 LOG_ERROR(LogCK, "%s로 형변환할 수 없습니다. ", NAMEOF(APlayerController));
641 }
642}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetupPlayerInputComponent()

void AMainPlayerCharacter::SetupPlayerInputComponent ( UInputComponent *  PlayerInputComponent)
overrideprotectedvirtual
383{
384 Super::SetupPlayerInputComponent(PlayerInputComponent);
385
387 {
388 return;
389 }
390
391 UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(PlayerInputComponent);
392
393 EnhancedInputComponent->BindAction(PlayerExtendedData->MoveAction, ETriggerEvent::Triggered, this, &ThisClass::Move);
394 EnhancedInputComponent->BindAction(PlayerExtendedData->MoveAction, ETriggerEvent::Started, this, &ThisClass::OnMoveStarted);
395 EnhancedInputComponent->BindAction(PlayerExtendedData->Cam_RotationAction, ETriggerEvent::Triggered, this, &ThisClass::RotateCamera);
396 EnhancedInputComponent->BindAction(PlayerExtendedData->Cam_WheelAction, ETriggerEvent::Triggered, this, &ThisClass::OnMouseWheel);
397 EnhancedInputComponent->BindAction(PlayerExtendedData->Cam_LockOnAction, ETriggerEvent::Started, this, &ThisClass::ToggleLockOn);
398 EnhancedInputComponent->BindAction(PlayerExtendedData->DashAction, ETriggerEvent::Started, this, &ThisClass::GASInputPressed, TAG_INPUT_DASH.GetTag());
399 EnhancedInputComponent->BindAction(PlayerExtendedData->AttackAction, ETriggerEvent::Triggered, this, &ThisClass::GASInputPressed, TAG_INPUT_ATTACK.GetTag());
400 EnhancedInputComponent->BindAction(PlayerExtendedData->WarpStrikeAction, ETriggerEvent::Started, this, &ThisClass::GASInputPressed, TAG_INPUT_SKILL_STRIKE.GetTag());
401 EnhancedInputComponent->BindAction(PlayerExtendedData->Weapon_SkillAction, ETriggerEvent::Started, this, &ThisClass::GASInputPressed, TAG_INPUT_SKILL_WEAPON.GetTag());
402 EnhancedInputComponent->BindAction(PlayerExtendedData->Weapon_SkillAction, ETriggerEvent::Completed, this, &ThisClass::GASInputReleased, TAG_INPUT_SKILL_WEAPON.GetTag());
403 EnhancedInputComponent->BindAction(PlayerExtendedData->WeaponRequestSkillAction, ETriggerEvent::Started, this, &ThisClass::GASInputPressed, TAG_INPUT_SKILL_WEAPONREQUEST.GetTag());
404}
TObjectPtr< UInputAction > WeaponRequestSkillAction
Definition CharacterControlData.h:102
TObjectPtr< UInputAction > AttackAction
Definition CharacterControlData.h:96
TObjectPtr< UInputAction > Weapon_SkillAction
Definition CharacterControlData.h:105
TObjectPtr< UInputAction > Cam_WheelAction
Definition CharacterControlData.h:114
TObjectPtr< UInputAction > DashAction
Definition CharacterControlData.h:90
TObjectPtr< UInputAction > Cam_RotationAction
Definition CharacterControlData.h:111
TObjectPtr< UInputAction > WarpStrikeAction
Definition CharacterControlData.h:99
TObjectPtr< UInputAction > MoveAction
Definition CharacterControlData.h:93
TObjectPtr< UInputAction > Cam_LockOnAction
Definition CharacterControlData.h:108

◆ ToggleLockOn()

void AMainPlayerCharacter::ToggleLockOn ( )
protected
527{
528 if (UCameraTargetingComponent* CamTargetingComponent = GetPlayerTargetingComponent())
529 {
530 CamTargetingComponent->ToggleTargeting();
531 }
532 else
533 {
534 LOG_ERROR(LogCK, "%s를 가져올 수 없습니다. ", NAMEOF(UCameraTargetingComponent));
535 }
536}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ TriggerKnockDown()

void AMainPlayerCharacter::TriggerKnockDown ( UAbilitySystemComponent *  SourceASC,
const FGameplayEffectSpec &  Spec 
)
protected
879{
881
882 FGameplayEventData EventData;
883 EventData.EventTag = TAG_EVENT_PLAYER_KNOCKDOWN;
884 EventData.Instigator = Spec.GetContext().GetEffectCauser();
885 if (IsValid(EventData.Instigator.Get()) == false && IsValid(SourceASC))
886 {
887 EventData.Instigator = SourceASC->GetAvatarActor();
888 }
889
890 EventData.Target = this;
891 EventData.ContextHandle = Spec.GetContext();
892 ASC->HandleGameplayEvent(TAG_EVENT_PLAYER_KNOCKDOWN, &EventData);
893}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateChargeFacingTurn()

void AMainPlayerCharacter::UpdateChargeFacingTurn ( )
protected
200{
201 const FRotator CurrentRotation(0.0f, GetActorRotation().Yaw, 0.0f);
202 const FRotator TargetRotation(0.0f, ChargeFacingTargetYaw, 0.0f);
203 const FRotator NewRotation = FMath::RInterpConstantTo(CurrentRotation, TargetRotation, 0.01f, 700.f);
204
205 SetActorRotation(NewRotation);
206
207 if (!NewRotation.Equals(TargetRotation, ChargeFacingTurnTolerance))
208 {
209 return;
210 }
211
212 if (UWorld* World = GetWorld())
213 {
214 World->GetTimerManager().ClearTimer(ChargeFacingTurnTimerHandle);
215 }
216}

멤버 데이터 문서화

◆ bIsCharging

bool AMainPlayerCharacter::bIsCharging = false
private

◆ bIsLockedOn

bool AMainPlayerCharacter::bIsLockedOn = false
private

◆ bPlayerControllerDependenciesInitialized

bool AMainPlayerCharacter::bPlayerControllerDependenciesInitialized = false
protected

◆ CharacterControlData

TObjectPtr<UCharacterControlData> AMainPlayerCharacter::CharacterControlData
protected

◆ CharacterGhostEffectComponent

TObjectPtr<UCharacterGhostEffectComponent> AMainPlayerCharacter::CharacterGhostEffectComponent
protected

◆ ChargeFacingTargetYaw

float AMainPlayerCharacter::ChargeFacingTargetYaw = 0.0f
private

◆ ChargeFacingTurnTimerHandle

FTimerHandle AMainPlayerCharacter::ChargeFacingTurnTimerHandle
private

◆ ChargeFacingTurnTolerance

float AMainPlayerCharacter::ChargeFacingTurnTolerance = 1.0f
private

◆ ChargeStateComponent

TObjectPtr<UChargeStateComponent> AMainPlayerCharacter::ChargeStateComponent
protected

◆ GEAppliedDelegateHandle

FDelegateHandle AMainPlayerCharacter::GEAppliedDelegateHandle
private

◆ HitStunTagDelegateHandle

FDelegateHandle AMainPlayerCharacter::HitStunTagDelegateHandle
private

◆ LookSensitivity

float AMainPlayerCharacter::LookSensitivity = 1.0f
private

◆ MotionWarpingComponent

TObjectPtr<UPlayerMotionWarpingComponent> AMainPlayerCharacter::MotionWarpingComponent
protected

◆ PlayerExtendedData

const FPlayerExtendedData* AMainPlayerCharacter::PlayerExtendedData = nullptr

◆ PlayerMovementComponent

TObjectPtr<UPlayerMovementComponent> AMainPlayerCharacter::PlayerMovementComponent
protected

◆ ProjectileLauncherComponent

TObjectPtr<UProjectileLauncherComponent> AMainPlayerCharacter::ProjectileLauncherComponent
protected

◆ RawMovementInputDirection

FVector AMainPlayerCharacter::RawMovementInputDirection = FVector::ZeroVector
private

◆ RawMovementInputFrame

uint64 AMainPlayerCharacter::RawMovementInputFrame = 0
private

◆ RecentHitStunTimes

TArray<double> AMainPlayerCharacter::RecentHitStunTimes
private

◆ TargetingComponent

TObjectPtr<UTargetingComponent> AMainPlayerCharacter::TargetingComponent
protected

◆ WeaponLoadoutComponent

TObjectPtr<UWeaponLoadoutComponent> AMainPlayerCharacter::WeaponLoadoutComponent
protected

◆ WeaponMesh

TObjectPtr<USkeletalMeshComponent> AMainPlayerCharacter::WeaponMesh
protected

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