bool UAbilitySystemBlueprintLibrary::TargetDataHasEndPoint(FGameplayAbilityTargetDataHandle TargetData, int32 Index) { if (TargetData.Data.IsValidIndex(Index)) { FGameplayAbilityTargetData* Data = TargetData.Data[Index].Get(); if (Data) { return (Data->HasHitResult() || Data->HasEndPoint()); } } return false; }
FVector UAbilitySystemBlueprintLibrary::GetTargetDataEndPoint(FGameplayAbilityTargetDataHandle TargetData, int32 Index) { if (TargetData.Data.IsValidIndex(Index)) { FGameplayAbilityTargetData* Data = TargetData.Data[Index].Get(); if (Data) { const FHitResult* HitResultPtr = Data->GetHitResult(); if (HitResultPtr) { return HitResultPtr->Location; } else if (Data->HasEndPoint()) { return Data->GetEndPoint(); } } } return FVector::ZeroVector; }