81{
83 {
86 }
87
88
89 UObject* OptionalObj = const_cast<UObject*>(Payload.OptionalObject.Get());
92 const bool bUseSingleTrace = IsValid(HitNotify);
93 if (bUseSingleTrace == false && IsValid(HitNotifyState) == false)
94 {
95 LOG_ERROR(LogCKAbility,
"지원하지 않는 HitCheck Payload입니다: %s", *GetNameSafe(OptionalObj));
96 return;
97 }
98
99 const int32 CombatHitDataIndex = FMath::RoundToInt(Payload.EventMagnitude);
101 if (HitData == nullptr)
102 {
103 LOG_ERROR(LogCKAbility,
"CombatHitData가 없습니다. CombatData=%s Index=%d", *GetNameSafe(
CombatData), CombatHitDataIndex);
104 return;
105 }
106
108
109 int32 MaxHitCountPerTarget = 1;
112 {
113 if (bUseSingleTrace)
114 {
115 LOG_ERROR(LogCKAbility,
"MultiHit은 AnimNotifyState가 필요합니다. CombatData=%s Index=%d", *GetNameSafe(
CombatData), CombatHitDataIndex);
116 return;
117 }
118
121 if (IsValid(MultiHitProfile) == false)
122 {
123 LOG_ERROR(LogCKAbility,
"MultiHitProfile이 비어있습니다. CombatData=%s Index=%d", *GetNameSafe(
CombatData), CombatHitDataIndex);
124 return;
125 }
126
128 }
129
131 const bool bHasTraceTransform = OptionalTraceTransform.IsSet();
132 const FTransform TraceTransform = bHasTraceTransform ? OptionalTraceTransform.GetValue() : FTransform::Identity;
133
136 {
137 ActiveTraceTask->OnCompleteDelegate.AddDynamic(
this, &ThisClass::OnTraceResultCallback);
138 ActiveTraceTask->OnFinisherCompleteDelegate.AddDynamic(
this, &ThisClass::OnFinisherResultCallback);
140 }
141}
static UAT_Trace * CreateTask(UGameplayAbility *OwningAbility, const UCombatDataBase *InCombatData, float InCombatDataLevel, int32 InCombatHitDataIndex, bool bInSingleTrace=false, int32 InMaxHitCountPerTarget=1, UDA_MultiHitProfile *InMultiHitProfile=nullptr, bool bInHasOverrideTraceTransform=false, const FTransform &InOverrideTraceTransform=FTransform::Identity)
Definition AT_Trace.cpp:14
Definition AnimNotifyState_AttackCollision.h:14
Definition AnimNotify_AttackHitCheck.h:14
virtual TOptional< FTransform > GetTraceTransformForHitCheck() const
Definition GA_CombatBase.cpp:143
Definition CombatDataBase.h:46
FORCEINLINE int32 GetMaxHitCountPerTarget() const
Definition CombatDataBase.h:50