42. Infinite Gameplay Effects
This commit is contained in:
		
							
								
								
									
										
											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; | ||||
|  | ||||
| 	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