document.write("
#pragma once
#include "CoreMinimal.h"
#include "AITypes.h"
#include "Abilities/Tasks/AbilityTask.h"
#include "Navigation/PathFollowingComponent.h"
#include "AbilityTask_MoveCharacterToLocation.generated.h"
class UPathFollowingComponent;
class ADandelionPlayerController;
class UDandelionGameplayAbility;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(
FMoveToLocationSimpleDelegate,
EPathFollowingResult::Type,
PathingResultType
);
UCLASS(Abstract)
class DANDELION_API UAbilityTask_MoveCharacterToLocation : public UAbilityTask
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable)
FMoveToLocationSimpleDelegate OnMoveComplete;
UAbilityTask_MoveCharacterToLocation();
UFUNCTION(
BlueprintCallable,
Category = "Ability|Tasks",
meta = (HidePin = "OwningAbility", DefaultToSelf = "OwningAbility", BlueprintInternalUseOnly = "TRUE")
)
static UAbilityTask_MoveCharacterToLocation* MoveCharacterToLocation(
UDandelionGameplayAbility* OwningAbility,
const FName TaskInstanceName
);
FVector GetTargetLocation() const;
virtual void ExternalCancel() override;
protected:
UPROPERTY(Transient)
TObjectPtr<ADandelionPlayerController> PlayerController;
FVector TargetLocation;
virtual void Activate() override;
virtual void OnDestroy(bool bInOwnerFinished) override;
void InitializeBaseMoveTask(const UDandelionGameplayAbility* OwningAbility);
private:
UPROPERTY(Transient)
TObjectPtr<UPathFollowingComponent> PlayerPathFollowingComponent;
FAIRequestID PathRequestID;
FDelegateHandle HandleOnRequestFinishedBinding;
void HandleOnRequestFinished(const FAIRequestID& AIRequestID, const FPathFollowingResult& Result) const;
};
AbilityTask_MoveCharacterToLocation.h - Snippet hosted by \"Cacher\"
");