Files
Aura-TopDownRPG-GAS/Source/Aura/Public/Actor/AuraEffectActor.h
2025-10-14 22:20:59 -04:00

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:
};