42. Infinite Gameplay Effects
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -8,6 +8,10 @@ AGasaEffectActor::AGasaEffectActor()
|
||||
PrimaryActorTick.bCanEverTick = false;
|
||||
|
||||
RootComponent = CreateDefaultSubobject<USceneComponent>("Root");
|
||||
|
||||
InstantEffectUsage = DefaultEffectUsagePolicy;
|
||||
DurationEffectUsage = DefaultEffectUsagePolicy;
|
||||
InfiniteEffectUsage = DefaultEffectUsagePolicy;
|
||||
}
|
||||
|
||||
void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEffect> EffectClass)
|
||||
@@ -21,3 +25,11 @@ void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEf
|
||||
FGameplayEffectSpecHandle Spec = AS->MakeOutgoingSpec( EffectClass, 1.0f, Context );
|
||||
AS->ApplyGameplayEffectSpecToSelf( * Spec.Data );
|
||||
}
|
||||
|
||||
void AGasaEffectActor::OnOverlap(AActor* Actor)
|
||||
{
|
||||
}
|
||||
|
||||
void AGasaEffectActor::OnEndOverlap(AActor* Actor)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -6,6 +6,20 @@
|
||||
|
||||
#include "GasaEffectActor.generated.h"
|
||||
|
||||
UENUM(BlueprintType)
|
||||
enum class EEffectUsagePolicy : uint8
|
||||
{
|
||||
None = 0 UMETA(Hidden),
|
||||
ApplyOnOverlap = bit(0),
|
||||
ApplyOnEndOverlap = bit(1),
|
||||
DoNotApply = bit(2),
|
||||
RemoveOnOverlap = bit(3),
|
||||
RemoveOnEndOverlap = bit(4),
|
||||
DoNotRemove = bit(5),
|
||||
};
|
||||
|
||||
constexpr int32 DefaultEffectUsagePolicy = (int32(EEffectUsagePolicy::DoNotApply) | int32(EEffectUsagePolicy::RemoveOnEndOverlap));
|
||||
|
||||
UCLASS()
|
||||
class GASA_API AGasaEffectActor : public AGasaActor
|
||||
{
|
||||
@@ -14,13 +28,34 @@ public:
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||
TSubclassOf<UGameplayEffect> InstantEffectClass;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy))
|
||||
int32 InstantEffectUsage;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||
TSubclassOf<UGameplayEffect> DurationEffectClass;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy))
|
||||
int32 DurationEffectUsage;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||
TSubclassOf<UGameplayEffect> InfiniteEffectClass;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy))
|
||||
int32 InfiniteEffectUsage;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||
bool bDestroyOnEffectRemoval = false;
|
||||
|
||||
AGasaEffectActor();
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "Gameplay Effects")
|
||||
void ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEffect> EffectClass );
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void OnOverlap(AActor* Actor);
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void OnEndOverlap(AActor* Actor);
|
||||
};
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#define rcast( Type, Value ) reinterpret_cast<Type>( Value )
|
||||
#define scast( Type, Value ) static_cast<Type>( Value )
|
||||
|
||||
#define bit(position) (1 << position)
|
||||
|
||||
#pragma region Math
|
||||
#define m_pow2( value ) (value * value)
|
||||
#pragma endregion Math
|
||||
|
||||
Reference in New Issue
Block a user