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

#include <GA_Skill_StarFall.h>

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

Public 멤버 함수

 UGA_Skill_StarFall ()
 
virtual bool CanActivateAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayTagContainer *SourceTags=nullptr, const FGameplayTagContainer *TargetTags=nullptr, FGameplayTagContainer *OptionalRelevantTags=nullptr) const override
 
virtual void ActivateAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData *TriggerEventData) override
 
virtual void EndAbility (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
 
- UGA_SkillBase(으)로부터 상속된 Public 멤버 함수
virtual void ApplyCooldown (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
const FGameplayTagContainer * GetCooldownTags () const
 
- UGA_CombatBase(으)로부터 상속된 Public 멤버 함수
virtual void OnGiveAbility (const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilitySpec &Spec) override
 
- UGA_Base(으)로부터 상속된 Public 멤버 함수
 UGA_Base ()
 

Protected 멤버 함수

virtual void ApplyCombatData () override
 
void OnLauncherProjectileLaunched (const AProjectileBase *Projectile)
 
void OnLauncherProjectileDeactivated (AProjectileBase *Projectile, EProjectileDeactivationOption Option)
 
void LaunchSpawnedProjectile ()
 
bool ComputeImpactPoint (const AMainPlayerCharacter *Player, const FTargetSelectionResult &TargetResult, FWeaponRequestImpactResult &OutImpactResult) const
 
bool ComputeLaunchPath (const AMainPlayerCharacter *Player, const FWeaponRequestImpactResult &ImpactResult, FVector &OutFrom, FVector &OutDirection, FVector &OutImpactPoint) const
 
bool GetWeaponProjectileClassType (FGameplayTag &OutWeaponTag, const TSubclassOf< AWeaponProjectile > *&OutFoundClass) const
 
bool ChangeTargetingAndActivateStrike (FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayAbilityActivationInfo ActivationInfo, FGameplayTag RequestedWeaponTag)
 
void SubscribeLauncher (UProjectileLauncherComponent *Launcher)
 
void UnsubscribeLauncher ()
 
- UGA_SkillBase(으)로부터 상속된 Protected 멤버 함수
virtual bool CheckCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayTagContainer *OptionalRelevantTags) const override
 
virtual void ApplyCost (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
 
float GetSkillMontageSectionLength (const UAnimMontage *Montage, FName SectionName, bool bApplyPlayRate=false, float PlayRate=1.0f) const
 
bool HasClearStrikePath (const AMainPlayerCharacter *Player, const AActor *TargetActor) const
 
void SetAvatarPawnCollisionResponse (ECollisionResponse Response) const
 
float GetPlayerCurrentWeaponAttackRange () const
 
void SetAvatarMeshHidden (bool bHidden) const
 
void ResetSkillMontagePlayRate () const
 
AActor * GetTargetActor () const
 
UAnimMontage * GetSkillMontage (FGameplayTag PlayMontageTag=FGameplayTag::EmptyTag) const
 
bool ContainsAllMontageSections (const UAnimMontage *Montage, TArray< FName > SectionNames) const
 
template<typename T >
const T * GetExtendedData () const
 
template<typename T >
bool HasExtendedData () const
 
- UGA_CombatBase(으)로부터 상속된 Protected 멤버 함수
void SetupHitCheckListener ()
 
void OnHitCheckStart (FGameplayEventData Payload)
 
void OnHitCheckEnd (FGameplayEventData Payload)
 
void OnTraceResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex)
 
void OnFinisherResultCallback (const FGameplayAbilityTargetDataHandle &TargetDataHandle, float CombatDataLevel, int32 CombatHitDataIndex)
 
virtual TOptional< FTransform > GetTraceTransformForHitCheck () const
 
void ApplyEffectsToSelf (const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo)
 
FCombatHitPayload BuildCombatHitPayload (const FCombatHitData &HitData, float DamageMultiplier, bool bRequestKnockback)
 
TArray< FGameplayEffectSpecHandle > BuildCombatEffectSpecs (const FCombatHitData &HitData, float DamageMultiplier)
 
FGameplayEffectSpecHandle BuildEffectSpec (const FCombatEffectData &EffectData, float CombatDataLevel)
 
void PlayCombatHitAudio (const FVector &HitLocation)
 
void CacheAudioTagComponents ()
 
const FKnockbackDataFindKnockbackData (const FCombatHitData &HitData) const
 
void NotifyCameraHitConfirmed () const
 
float GetAttackSpeedRate () const
 
void UpdateAttackWarpTargetForRange (FName WarpTargetName=FName("Target"))
 
void UpdateAttackWarpTargetForRange (FName WarpTargetName, ITargetableInterface *Target)
 
- UGA_Base(으)로부터 상속된 Protected 멤버 함수
UCharacterMotionWarpingComponentBase * GetMotionWarpingComponent () const
 
void SetupCancelableListener ()
 
void OnCancelableInputDetected (FGameplayEventData Payload)
 
virtual void HandleCancelable (FGameplayEventData Payload)
 
virtual void OnAbilityMontageCompleted ()
 
virtual void OnAbilityMontageInterrupted ()
 
virtual void OnAbilityMontageCancellable ()
 

Protected 속성

float MaxImpactDistance = 0.0f
 
float ImpactObstructionOffset = 0.0f
 
float SpawnHeightAboveImpact = 0.0f
 
float SpawnLateralOffset = 0.0f
 
float SpawnForwardOffset = 0.0f
 
float WeaponLaunchDelay = 0.0f
 
- UGA_SkillBase(으)로부터 상속된 Protected 속성
FGameplayTag CooldownTag
 
float CostValue
 
float CooldownDuration
 
- UGA_CombatBase(으)로부터 상속된 Protected 속성
TObjectPtr< UCombatDataBaseCombatData
 
float AttackRange = 450.0f
 
float AttackRangeCorrectionDistance = 250.0f
 
float AttackRangeCorrectionInnerOffset = 30.0f
 
TObjectPtr< UAT_TraceActiveTraceTask
 
TArray< TSubclassOf< UGameplayEffect > > SelfEffectClasses
 
FGameplayTag WeaponHitCueTag
 
TArray< TObjectPtr< UAudioEmitterComponent > > CachedAudioTagComponents
 

Private 속성

TObjectPtr< UTargetSelectorTargetSelector
 
TObjectPtr< UTickableProjectileActionBasePullBehavior
 
TWeakObjectPtr< UProjectileLauncherComponent > CachedLauncher
 
TWeakObjectPtr< AProjectileBaseSpawnedProjectile
 
TSubclassOf< AWeaponProjectilePendingProjectileClass
 
TWeakObjectPtr< UProjectileLauncherComponent > PendingLauncher
 
bool bLauncherSubscribed = false
 
FVector PendingLaunchFrom = FVector::ZeroVector
 
FVector PendingLaunchDirection = FVector::ForwardVector
 
FProjectilePathSelector PathSelector
 

상세한 설명

상공에서 임팩트 지점으로 비스듬히 낙하하는 무기 투사체를 소환하는 스킬.

  • TargetSelector가 선택한 대상 방향으로 PathSelector가 낙하 경로를 계산한다.
  • 낙하 중 Pull Action을 실행하고, 투사체가 지면에 충돌하면 회수 가능한 무기를 생성한다.
  • 이미 필드에 생성된 요청 무기가 있으면 해당 무기를 타겟으로 Strike를 활성화한다.

생성자 & 소멸자 문서화

◆ UGA_Skill_StarFall()

UGA_Skill_StarFall::UGA_Skill_StarFall ( )
25{
26 PullBehavior = CreateDefaultSubobject<UWeaponBlackholeAction>(TEXT("PullBehavior"));
27 TargetSelector = CreateDefaultSubobject<UTargetSelector>(TEXT("TargetSelector"));
28}
TObjectPtr< UTargetSelector > TargetSelector
Definition GA_Skill_StarFall.h:78
TObjectPtr< UTickableProjectileActionBase > PullBehavior
Definition GA_Skill_StarFall.h:81

멤버 함수 문서화

◆ ActivateAbility()

void UGA_Skill_StarFall::ActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
const FGameplayEventData *  TriggerEventData 
)
overridevirtual

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

182{
183 AMainPlayerCharacter* Player = Cast<AMainPlayerCharacter>(ActorInfo ? ActorInfo->AvatarActor.Get() : nullptr);
184
185 if (Player == nullptr)
186 {
187 LOG_ERROR(LogCK, "MainPlayerCharacter가 존재하지 않습니다.");
188 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
189 return;
190 }
191
192 FGameplayTag RequestedWeaponTag = FGameplayTag::EmptyTag;
193 const TSubclassOf<AWeaponProjectile>* FoundClass = nullptr;
194
195 if (GetWeaponProjectileClassType(RequestedWeaponTag, FoundClass) == false)
196 {
197 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
198 return;
199 }
200
201 if (ChangeTargetingAndActivateStrike(Handle, ActorInfo, ActivationInfo, RequestedWeaponTag))
202 {
203 EndAbility(Handle, ActorInfo, ActivationInfo, true, false);
204 return;
205 }
206
207 UProjectileLauncherComponent* Launcher = Player->GetProjectileLauncherComponent();
208
209 if (Launcher == nullptr)
210 {
211 LOG_ERROR(LogCK, "ProjectileLauncherComponent가 존재하지 않습니다.");
212 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
213 return;
214 }
215
216 if (TargetSelector == nullptr)
217 {
218 LOG_ERROR(LogCK, "TargetSelector가 존재하지 않습니다.");
219 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
220 return;
221 }
222
223 FTargetSelectionResult TargetResult;
224
225 if (TargetSelector->ResolveTarget(Player, TargetResult) == false)
226 {
227 LOG_ERROR(LogCK, "TargetSelector가 타겟을 결정하지 못했습니다.");
228 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
229 return;
230 }
231
232 FWeaponRequestImpactResult ImpactResult;
233
234 if (ComputeImpactPoint(Player, TargetResult, ImpactResult) == false)
235 {
236 LOG_ERROR(LogCK, "무기 낙하 지점을 계산하지 못했습니다.");
237 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
238 return;
239 }
240
241 FVector From = FVector::ZeroVector;
242 FVector Direction = FVector::ZeroVector;
243 FVector ImpactPoint = FVector::ZeroVector;
244
245 if (ComputeLaunchPath(Player, ImpactResult, From, Direction, ImpactPoint) == false)
246 {
247 LOG_ERROR(LogCK, "무기 낙하 경로를 계산하지 못했습니다.");
248 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
249 return;
250 }
251
252 ApplyEffectsToSelf(Handle, ActorInfo, ActivationInfo);
253
254 PendingProjectileClass = *FoundClass;
255 PendingLaunchDirection = Direction;
256 PendingLaunchFrom = From;
257 PendingLauncher = Launcher;
258
259 if (PullBehavior)
260 {
261 const float SpawnAltitude = From.Z - ImpactPoint.Z;
262 const FWeaponBlackholeActionContext ActionContext(Player, nullptr, ImpactPoint, SpawnAltitude);
263 PullBehavior->Enter(FInstancedStruct::Make(ActionContext));
264
266 checkf(TickTask, TEXT("%s 가 성공적으로 생성되지 않았습니다."), NAMEOF(UAT_WaitForTickableAction));
267 TickTask->ReadyForActivation();
268 }
269
270 if (UAbilityTask_WaitDelay* DelayTask = UAbilityTask_WaitDelay::WaitDelay(this, WeaponLaunchDelay))
271 {
272 DelayTask->OnFinish.AddDynamic(this, &ThisClass::LaunchSpawnedProjectile);
273 DelayTask->ReadyForActivation();
274 ApplyCooldown(Handle, ActorInfo, ActivationInfo);
275 }
276 else
277 {
278 EndAbility(Handle, ActorInfo, ActivationInfo, true, true);
279 }
280}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF(Type)
Definition CK_UE.h:30
Definition MainPlayerCharacter.h:39
Definition AT_WaitForTickableAction.h:14
static UAT_WaitForTickableAction * CreateTask(UGameplayAbility *OwningAbility, UTickableAction *InAction)
Definition AT_WaitForTickableAction.cpp:15
void ApplyEffectsToSelf(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo)
Definition GA_CombatBase.cpp:265
virtual void ApplyCooldown(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) const override
Definition GA_SkillBase.cpp:327
bool ComputeLaunchPath(const AMainPlayerCharacter *Player, const FWeaponRequestImpactResult &ImpactResult, FVector &OutFrom, FVector &OutDirection, FVector &OutImpactPoint) const
Definition GA_Skill_StarFall.cpp:347
float WeaponLaunchDelay
Definition GA_Skill_StarFall.h:74
bool ChangeTargetingAndActivateStrike(FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, FGameplayAbilityActivationInfo ActivationInfo, FGameplayTag RequestedWeaponTag)
Definition GA_Skill_StarFall.cpp:139
FVector PendingLaunchFrom
Definition GA_Skill_StarFall.h:98
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo *ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override
Definition GA_Skill_StarFall.cpp:314
FVector PendingLaunchDirection
Definition GA_Skill_StarFall.h:99
bool ComputeImpactPoint(const AMainPlayerCharacter *Player, const FTargetSelectionResult &TargetResult, FWeaponRequestImpactResult &OutImpactResult) const
Definition GA_Skill_StarFall.cpp:341
bool GetWeaponProjectileClassType(FGameplayTag &OutWeaponTag, const TSubclassOf< AWeaponProjectile > *&OutFoundClass) const
Definition GA_Skill_StarFall.cpp:92
TWeakObjectPtr< UProjectileLauncherComponent > PendingLauncher
Definition GA_Skill_StarFall.h:93
TSubclassOf< AWeaponProjectile > PendingProjectileClass
Definition GA_Skill_StarFall.h:90
Definition TargetSelector.h:26
Definition WeaponBlackholeAction.h:16
Definition ProjectilePathSelector.h:34
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyCombatData()

void UGA_Skill_StarFall::ApplyCombatData ( )
overrideprotectedvirtual

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

32{
33 Super::ApplyCombatData();
34
35 if (CombatData == nullptr)
36 {
37 return;
38 }
39
40 if (const FSkillStarFallData* Payload = CombatData->FindExtendedData<FSkillStarFallData>())
41 {
42 TargetSelector = Payload->TargetSelector ? DuplicateObject<UTargetSelector>(Payload->TargetSelector, this) : nullptr;
43 MaxImpactDistance = Payload->MaxImpactDistance;
44 ImpactObstructionOffset = Payload->ImpactObstructionOffset;
45 SpawnHeightAboveImpact = Payload->SpawnHeightAboveImpact;
46 SpawnLateralOffset = Payload->SpawnLateralOffset;
47 SpawnForwardOffset = Payload->SpawnForwardOffset;
48 PullBehavior = Payload->PullBehavior ? DuplicateObject<UTickableProjectileActionBase>(Payload->PullBehavior, this) : nullptr;
49 WeaponLaunchDelay = Payload->WeaponLaunchDelay;
50 }
51 else
52 {
53 LOG_ERROR(LogCK, "%s가 존재하지 않습니다.", NAMEOF(FSkillStarFallData));
54 }
55}
TObjectPtr< UCombatDataBase > CombatData
Definition GA_CombatBase.h:75
float SpawnForwardOffset
Definition GA_Skill_StarFall.h:71
float SpawnLateralOffset
Definition GA_Skill_StarFall.h:68
float SpawnHeightAboveImpact
Definition GA_Skill_StarFall.h:65
float ImpactObstructionOffset
Definition GA_Skill_StarFall.h:62
float MaxImpactDistance
Definition GA_Skill_StarFall.h:59
Definition ExtendedDatas.h:270

◆ CanActivateAbility()

bool UGA_Skill_StarFall::CanActivateAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayTagContainer *  SourceTags = nullptr,
const FGameplayTagContainer *  TargetTags = nullptr,
FGameplayTagContainer *  OptionalRelevantTags = nullptr 
) const
overridevirtual
59{
60 if (Super::CanActivateAbility(Handle, ActorInfo, SourceTags, TargetTags, OptionalRelevantTags) == false)
61 {
62 return false;
63 }
64
65 const AMainPlayerCharacter* Player = Cast<AMainPlayerCharacter>(ActorInfo ? ActorInfo->AvatarActor.Get() : nullptr);
66
67 if (Player == nullptr)
68 {
69 return false;
70 }
71
73
74 if (PlayerManagement == nullptr)
75 {
76 return false;
77 }
78
79 const FGameplayTag RequestedWeaponTag = PlayerManagement->GetWeaponTagToSwitchTo();
80
81 if (RequestedWeaponTag.IsValid() && RequestedWeaponTag == PlayerManagement->GetCurrentWeaponTag())
82 {
83 return PlayerManagement->FindSpawnedWeapon(RequestedWeaponTag) != nullptr;
84 }
85 else
86 {
87 return TargetSelector != nullptr;
88 }
89}
static UPlayerManagementSubsystem * GetPlayerManagementSubsystem(const UObject *WorldContextObject)
Definition CK_BPFunctionLibrary.cpp:86
Definition PlayerManagementSubsystem.h:42
FORCEINLINE FGameplayTag GetCurrentWeaponTag() const
Definition PlayerManagementSubsystem.h:95
FORCEINLINE FGameplayTag GetWeaponTagToSwitchTo() const
Definition PlayerManagementSubsystem.h:105
ATargetableWeapon * FindSpawnedWeapon(const FGameplayTag &WeaponTag)
Definition PlayerManagementSubsystem.cpp:477
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ChangeTargetingAndActivateStrike()

bool UGA_Skill_StarFall::ChangeTargetingAndActivateStrike ( FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
FGameplayAbilityActivationInfo  ActivationInfo,
FGameplayTag  RequestedWeaponTag 
)
protected
140{
142
143 if (PlayerManagement == nullptr)
144 {
145 LOG_ERROR(LogCK, "PlayerManagementSubsystem이 존재하지 않습니다.");
146 return true;
147 }
148
149 ATargetableWeapon* SpawnedWeapon = PlayerManagement->FindSpawnedWeapon(RequestedWeaponTag);
150
151 if (SpawnedWeapon == nullptr)
152 {
153 return false;
154 }
155
156 PlayerManagement->ChangeTargetingActor(SpawnedWeapon);
157 UAbilitySystemComponent* AbilitySystemComponent = ActorInfo ? ActorInfo->AbilitySystemComponent.Get() : nullptr;
158
159 if (AbilitySystemComponent == nullptr)
160 {
161 LOG_ERROR(LogCK, "AbilitySystemComponent가 존재하지 않습니다.");
162 return true;
163 }
164
165 FGameplayTagContainer StrikeAbilityTags;
166 StrikeAbilityTags.AddTag(TAG_CHARACTER_STATE_COMBAT_SKILL_STRIKE);
167
168 if (AbilitySystemComponent->TryActivateAbilitiesByTag(StrikeAbilityTags))
169 {
170 LOG_INFO(LogCK, "%s 발동에 성공했습니다.", NAMEOF(UGA_Skill_Strike));
171 }
172 else
173 {
174 LOG_WARNING(LogCK, "이미 생성된 무기로 %s 발동에 실패했습니다.", NAMEOF(UGA_Skill_Strike));
175 }
176
177 return true;
178}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:38
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
Definition TargetableWeapon.h:20
Definition GA_Skill_Strike.h:17
virtual void ChangeTargetingActor(ITargetableInterface *TargetableActor)
Definition PlayerManagementSubsystem.cpp:94
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ComputeImpactPoint()

bool UGA_Skill_StarFall::ComputeImpactPoint ( const AMainPlayerCharacter Player,
const FTargetSelectionResult TargetResult,
FWeaponRequestImpactResult OutImpactResult 
) const
protected
342{
343 return PathSelector.ResolveImpactPoint(Player, TargetResult, MaxImpactDistance, ImpactObstructionOffset, OutImpactResult);
344}
FProjectilePathSelector PathSelector
Definition GA_Skill_StarFall.h:101
bool ResolveImpactPoint(const AActor *RequestingActor, const FTargetSelectionResult &TargetResult, float MaxImpactDistance, float ImpactObstructionOffset, FWeaponRequestImpactResult &OutImpactResult) const
Definition ProjectilePathSelector.cpp:12
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ComputeLaunchPath()

bool UGA_Skill_StarFall::ComputeLaunchPath ( const AMainPlayerCharacter Player,
const FWeaponRequestImpactResult ImpactResult,
FVector &  OutFrom,
FVector &  OutDirection,
FVector &  OutImpactPoint 
) const
protected
348{
349 OutImpactPoint = ImpactResult.ImpactPoint;
351}
bool ResolveLaunchPath(const AActor *RequestingActor, const FVector &ImpactPoint, float SpawnHeightAboveImpact, float SpawnLateralOffset, float SpawnForwardOffset, FVector &OutFrom, FVector &OutDirection) const
Definition ProjectilePathSelector.cpp:98
FVector ImpactPoint
Definition ProjectilePathSelector.h:42
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EndAbility()

void UGA_Skill_StarFall::EndAbility ( const FGameplayAbilitySpecHandle  Handle,
const FGameplayAbilityActorInfo *  ActorInfo,
const FGameplayAbilityActivationInfo  ActivationInfo,
bool  bReplicateEndAbility,
bool  bWasCancelled 
)
overridevirtual

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

315{
316 if (PullBehavior)
317 {
318 PullBehavior->Exit();
319 }
320
322
324 AWeaponProjectile* WeaponProjectile = Cast<AWeaponProjectile>(SpawnedProjectile.Get());
325 ATargetableWeapon* DroppedWeapon = WeaponProjectile ? WeaponProjectile->GetSpawnedTargetableWeapon() : nullptr;
326
327 if (PlayerManagement && DroppedWeapon)
328 {
329 PlayerManagement->RegisterSpawnedWeapon(DroppedWeapon);
330 PlayerManagement->ChangeTargetingActor(DroppedWeapon);
331 }
332
333 SpawnedProjectile.Reset();
334 PendingLauncher.Reset();
335 PendingProjectileClass = nullptr;
336
337 Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
338}
Definition WeaponProjectile.h:18
FORCEINLINE ATargetableWeapon * GetSpawnedTargetableWeapon()
Definition WeaponProjectile.h:36
TWeakObjectPtr< AProjectileBase > SpawnedProjectile
Definition GA_Skill_StarFall.h:87
void UnsubscribeLauncher()
Definition GA_Skill_StarFall.cpp:369
void RegisterSpawnedWeapon(ATargetableWeapon *SpawnedWeapon)
Definition PlayerManagementSubsystem.cpp:501
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetWeaponProjectileClassType()

bool UGA_Skill_StarFall::GetWeaponProjectileClassType ( FGameplayTag &  OutWeaponTag,
const TSubclassOf< AWeaponProjectile > *&  OutFoundClass 
) const
protected
93{
94 OutWeaponTag = FGameplayTag::EmptyTag;
95 OutFoundClass = nullptr;
96
97 if (CombatData == nullptr)
98 {
99 LOG_ERROR(LogCK, "CombatData가 존재하지 않습니다.");
100 return false;
101 }
102
104
105 if (PlayerSubsystem == nullptr)
106 {
107 LOG_ERROR(LogCK, "PlayerManagementSubsystem이 존재하지 않습니다.");
108 return false;
109 }
110
111 const FWeaponChangeData* Payload = CombatData->FindExtendedData<FWeaponChangeData>();
112
113 if (Payload == nullptr)
114 {
115 LOG_ERROR(LogCK, "FWeaponChangeData가 존재하지 않습니다.");
116 return false;
117 }
118
119 const FGameplayTag RequestedWeaponTag = PlayerSubsystem->GetWeaponTagToSwitchTo();
120
121 if (RequestedWeaponTag.IsValid() == false)
122 {
123 LOG_ERROR(LogCK, "요청된 무기 태그가 유효하지 않습니다.");
124 return false;
125 }
126
127 if (const TSubclassOf<AWeaponProjectile>* RequestedClass = Payload->WeaponProjectileClasses.Find(RequestedWeaponTag))
128 {
129 OutWeaponTag = RequestedWeaponTag;
130 OutFoundClass = RequestedClass;
131 return true;
132 }
133
134 LOG_ERROR(LogCK, "요청된 무기 투사체 클래스를 찾을 수 없습니다.");
135 return false;
136}
Definition ExtendedDatas.h:212
TMap< FGameplayTag, TSubclassOf< AWeaponProjectile > > WeaponProjectileClasses
Definition ExtendedDatas.h:217
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LaunchSpawnedProjectile()

void UGA_Skill_StarFall::LaunchSpawnedProjectile ( )
protected
284{
285 UProjectileLauncherComponent* Launcher = PendingLauncher.Get();
286
287 if (Launcher == nullptr || PendingProjectileClass == nullptr)
288 {
289 LOG_ERROR(LogCK, "투사체 발사 컨텍스트가 유효하지 않습니다.");
290 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true);
291 return;
292 }
293
294 SubscribeLauncher(Launcher);
296
297 if (Projectile == nullptr)
298 {
299 LOG_ERROR(LogCK, "요청 무기 투사체 발사에 실패했습니다.");
301 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true);
302 return;
303 }
304
305 SpawnedProjectile = Projectile;
306
307 if (PullBehavior)
308 {
309 PullBehavior->BindProjectile(Projectile);
310 }
311}
Definition ProjectileBase.h:81
void SubscribeLauncher(UProjectileLauncherComponent *Launcher)
Definition GA_Skill_StarFall.cpp:354
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnLauncherProjectileDeactivated()

void UGA_Skill_StarFall::OnLauncherProjectileDeactivated ( AProjectileBase Projectile,
EProjectileDeactivationOption  Option 
)
protected
400{
401 if (Projectile == nullptr || SpawnedProjectile.Get() != Projectile)
402 {
403 return;
404 }
405
406 if (IsActive() == false)
407 {
408 return;
409 }
410
411 EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, false);
412}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnLauncherProjectileLaunched()

void UGA_Skill_StarFall::OnLauncherProjectileLaunched ( const AProjectileBase Projectile)
protected
389{
390 if (Projectile == nullptr || SpawnedProjectile.Get() != Projectile)
391 {
392 return;
393 }
394
395 LOG_INFO(LogCK, "요청 무기 투사체 발사가 확인되었습니다.");
396}

◆ SubscribeLauncher()

void UGA_Skill_StarFall::SubscribeLauncher ( UProjectileLauncherComponent *  Launcher)
protected
355{
356 if (Launcher == nullptr || bLauncherSubscribed == true)
357 {
358 return;
359 }
360
361 CachedLauncher = Launcher;
362 bLauncherSubscribed = true;
363
364 Launcher->OnProjectileLaunchedDelegate.AddUniqueDynamic(this, &ThisClass::OnLauncherProjectileLaunched);
365 Launcher->OnProjectileDeactivatedDelegate.AddUniqueDynamic(this, &ThisClass::OnLauncherProjectileDeactivated);
366}
TWeakObjectPtr< UProjectileLauncherComponent > CachedLauncher
Definition GA_Skill_StarFall.h:84
bool bLauncherSubscribed
Definition GA_Skill_StarFall.h:96
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UnsubscribeLauncher()

void UGA_Skill_StarFall::UnsubscribeLauncher ( )
protected
370{
371 if (bLauncherSubscribed == false)
372 {
373 CachedLauncher.Reset();
374 return;
375 }
376
377 if (UProjectileLauncherComponent* Launcher = CachedLauncher.Get())
378 {
379 Launcher->OnProjectileLaunchedDelegate.RemoveDynamic(this, &ThisClass::OnLauncherProjectileLaunched);
380 Launcher->OnProjectileDeactivatedDelegate.RemoveDynamic(this, &ThisClass::OnLauncherProjectileDeactivated);
381 }
382
383 bLauncherSubscribed = false;
384 CachedLauncher.Reset();
385}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ bLauncherSubscribed

bool UGA_Skill_StarFall::bLauncherSubscribed = false
private

◆ CachedLauncher

TWeakObjectPtr<UProjectileLauncherComponent> UGA_Skill_StarFall::CachedLauncher
private

◆ ImpactObstructionOffset

float UGA_Skill_StarFall::ImpactObstructionOffset = 0.0f
protected

◆ MaxImpactDistance

float UGA_Skill_StarFall::MaxImpactDistance = 0.0f
protected

◆ PathSelector

FProjectilePathSelector UGA_Skill_StarFall::PathSelector
private

◆ PendingLaunchDirection

FVector UGA_Skill_StarFall::PendingLaunchDirection = FVector::ForwardVector
private

◆ PendingLauncher

TWeakObjectPtr<UProjectileLauncherComponent> UGA_Skill_StarFall::PendingLauncher
private

◆ PendingLaunchFrom

FVector UGA_Skill_StarFall::PendingLaunchFrom = FVector::ZeroVector
private

◆ PendingProjectileClass

TSubclassOf<AWeaponProjectile> UGA_Skill_StarFall::PendingProjectileClass
private

◆ PullBehavior

TObjectPtr<UTickableProjectileActionBase> UGA_Skill_StarFall::PullBehavior
private

◆ SpawnedProjectile

TWeakObjectPtr<AProjectileBase> UGA_Skill_StarFall::SpawnedProjectile
private

◆ SpawnForwardOffset

float UGA_Skill_StarFall::SpawnForwardOffset = 0.0f
protected

◆ SpawnHeightAboveImpact

float UGA_Skill_StarFall::SpawnHeightAboveImpact = 0.0f
protected

◆ SpawnLateralOffset

float UGA_Skill_StarFall::SpawnLateralOffset = 0.0f
protected

◆ TargetSelector

TObjectPtr<UTargetSelector> UGA_Skill_StarFall::TargetSelector
private

◆ WeaponLaunchDelay

float UGA_Skill_StarFall::WeaponLaunchDelay = 0.0f
protected

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