42. Infinite Gameplay Effects
This commit is contained in:
parent
6c9256d033
commit
b037490ef8
BIN
Project/Binaries/Win64/UnrealEditor-GasaEditor.dll
(Stored with Git LFS)
BIN
Project/Binaries/Win64/UnrealEditor-GasaEditor.dll
(Stored with Git LFS)
Binary file not shown.
@ -8,6 +8,10 @@ AGasaEffectActor::AGasaEffectActor()
|
|||||||
PrimaryActorTick.bCanEverTick = false;
|
PrimaryActorTick.bCanEverTick = false;
|
||||||
|
|
||||||
RootComponent = CreateDefaultSubobject<USceneComponent>("Root");
|
RootComponent = CreateDefaultSubobject<USceneComponent>("Root");
|
||||||
|
|
||||||
|
InstantEffectUsage = DefaultEffectUsagePolicy;
|
||||||
|
DurationEffectUsage = DefaultEffectUsagePolicy;
|
||||||
|
InfiniteEffectUsage = DefaultEffectUsagePolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEffect> EffectClass)
|
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 );
|
FGameplayEffectSpecHandle Spec = AS->MakeOutgoingSpec( EffectClass, 1.0f, Context );
|
||||||
AS->ApplyGameplayEffectSpecToSelf( * Spec.Data );
|
AS->ApplyGameplayEffectSpecToSelf( * Spec.Data );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AGasaEffectActor::OnOverlap(AActor* Actor)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaEffectActor::OnEndOverlap(AActor* Actor)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@ -6,6 +6,20 @@
|
|||||||
|
|
||||||
#include "GasaEffectActor.generated.h"
|
#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()
|
UCLASS()
|
||||||
class GASA_API AGasaEffectActor : public AGasaActor
|
class GASA_API AGasaEffectActor : public AGasaActor
|
||||||
{
|
{
|
||||||
@ -14,13 +28,34 @@ public:
|
|||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||||
TSubclassOf<UGameplayEffect> InstantEffectClass;
|
TSubclassOf<UGameplayEffect> InstantEffectClass;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects", meta=(Bitmask, BitmaskEnum = EEffectUsagePolicy))
|
||||||
|
int32 InstantEffectUsage;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||||
TSubclassOf<UGameplayEffect> DurationEffectClass;
|
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();
|
AGasaEffectActor();
|
||||||
|
|
||||||
UFUNCTION(BlueprintCallable, Category = "Gameplay Effects")
|
UFUNCTION(BlueprintCallable, Category = "Gameplay Effects")
|
||||||
void ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEffect> EffectClass );
|
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 rcast( Type, Value ) reinterpret_cast<Type>( Value )
|
||||||
#define scast( Type, Value ) static_cast<Type>( Value )
|
#define scast( Type, Value ) static_cast<Type>( Value )
|
||||||
|
|
||||||
|
#define bit(position) (1 << position)
|
||||||
|
|
||||||
#pragma region Math
|
#pragma region Math
|
||||||
#define m_pow2( value ) (value * value)
|
#define m_pow2( value ) (value * value)
|
||||||
#pragma endregion Math
|
#pragma endregion Math
|
||||||
|
Loading…
Reference in New Issue
Block a user