49 lines
1.8 KiB
C
49 lines
1.8 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "UObject/ObjectMacros.h"
|
||
|
#include "Abilities/Tasks/AbilityTask.h"
|
||
|
#include "Engine/EngineTypes.h"
|
||
|
#include "CollisionQueryParams.h"
|
||
|
#include "WorldCollision.h"
|
||
|
#include "Engine/CollisionProfile.h"
|
||
|
#include "Abilities/GameplayAbilityTargetDataFilter.h"
|
||
|
#include "Interaction/InteractionOption.h"
|
||
|
#include "Interaction/InteractionQuery.h"
|
||
|
#include "Interaction/IInteractableTarget.h"
|
||
|
#include "AbilityTask_WaitForInteractableTargets.generated.h"
|
||
|
|
||
|
class AActor;
|
||
|
class UPrimitiveComponent;
|
||
|
class UGameplayAbility;
|
||
|
|
||
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FInteractableObjectsChangedEvent, const TArray<FInteractionOption>&, InteractableOptions);
|
||
|
|
||
|
UCLASS(Abstract)
|
||
|
class UAbilityTask_WaitForInteractableTargets : public UAbilityTask
|
||
|
{
|
||
|
GENERATED_UCLASS_BODY()
|
||
|
|
||
|
public:
|
||
|
UPROPERTY(BlueprintAssignable)
|
||
|
FInteractableObjectsChangedEvent InteractableObjectsChanged;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
static void LineTrace(FHitResult& OutHitResult, const UWorld* World, const FVector& Start, const FVector& End, FName ProfileName, const FCollisionQueryParams Params);
|
||
|
|
||
|
void AimWithPlayerController(const AActor* InSourceActor, FCollisionQueryParams Params, const FVector& TraceStart, float MaxRange, FVector& OutTraceEnd, bool bIgnorePitch = false) const;
|
||
|
|
||
|
static bool ClipCameraRayToAbilityRange(FVector CameraLocation, FVector CameraDirection, FVector AbilityCenter, float AbilityRange, FVector& ClippedPosition);
|
||
|
|
||
|
void UpdateInteractableOptions(const FInteractionQuery& InteractQuery, const TArray<TScriptInterface<IInteractableTarget>>& InteractableTargets);
|
||
|
|
||
|
FCollisionProfileName TraceProfile;
|
||
|
|
||
|
// Does the trace affect the aiming pitch
|
||
|
bool bTraceAffectsAimPitch = true;
|
||
|
|
||
|
TArray<FInteractionOption> CurrentOptions;
|
||
|
};
|