83 lines
2.3 KiB
C++
83 lines
2.3 KiB
C++
// Copyright Echo Devgroup
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "ActiveGameplayEffectHandle.h"
|
|
#include "GameplayEffectTypes.h"
|
|
#include "GameFramework/Actor.h"
|
|
#include "AuraEffectActor.generated.h"
|
|
|
|
class UAbilitySystemComponent;
|
|
class UGameplayEffect;
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EEffectApplicationPolicy :uint8
|
|
{
|
|
ApplyOnOverlap,
|
|
ApplyOnEndOverlap,
|
|
DoNotApply
|
|
};
|
|
|
|
UENUM(BlueprintType)
|
|
enum class EEffectRemovalPolicy :uint8
|
|
{
|
|
RemoveOnEndOverlap,
|
|
DoNotRemove
|
|
};
|
|
|
|
UCLASS()
|
|
class AURA_API AAuraEffectActor : public AActor
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
AAuraEffectActor();
|
|
|
|
|
|
protected:
|
|
virtual void BeginPlay() override;
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void OnOverlap(AActor* TargetActor);
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void OnEndOverlap(AActor* TargetActor);
|
|
|
|
UPROPERTY(EditAnywhere)
|
|
bool bDestroyOnEffectRemoval = false;
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void ApplyEffectToTarget(AActor* TargetActor, TSubclassOf<UGameplayEffect> GameplayEffectClass);
|
|
|
|
//Instant Gameplay Effects
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
TSubclassOf<UGameplayEffect> InstantGameplayEffectClass;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
EEffectApplicationPolicy InstantEffectApplicationPolicy = EEffectApplicationPolicy::DoNotApply;
|
|
|
|
//Duration Gameplay Effects
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
TSubclassOf<UGameplayEffect> DurationGameplayEffectClass;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
EEffectApplicationPolicy DurationEffectApplicationPolicy = EEffectApplicationPolicy::DoNotApply;
|
|
|
|
//Infinite Gameplay Effects
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
TSubclassOf<UGameplayEffect> InfiniteGameplayEffectClass;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
EEffectApplicationPolicy InfiniteEffectApplicationPolicy = EEffectApplicationPolicy::DoNotApply;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
EEffectRemovalPolicy InfiniteEffectRemovalPolicy = EEffectRemovalPolicy::RemoveOnEndOverlap;
|
|
|
|
TMap<FActiveGameplayEffectHandle, UAbilitySystemComponent*> ActiveEffectHandles;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
|
|
float ActorLevel = 1.f;
|
|
private:
|
|
};
|
|
|