#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "UObject/NoExportTypes.h"
#include "AnimNotifySpawnEffectInfo.h"
#include "AnimNotify_PlayNiagaraEffectBasedOnTag.generated.h"

class UNiagaraSystem;
class UFXSystemComponent;

UCLASS(Blueprintable)
class DEADBYDAYLIGHT_API UAnimNotify_PlayNiagaraEffectBasedOnTag : public UAnimNotify
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UNiagaraSystem* DefaultEffectClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool AlwaysSpawnDefaultEffect;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FVector LocationOffset;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FRotator RotationOffset;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FVector Scale;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bAbsoluteScale;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 Attached : 1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName SocketName;

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FAnimNotifySpawnEffectInfo> _spawnEffectInfos;

public:
	UFUNCTION(BlueprintPure=false, BlueprintCallable)
	UFXSystemComponent* GetSpawnedTagBasedEffect() const;

	UFUNCTION(BlueprintPure=false, BlueprintCallable)
	UFXSystemComponent* GetSpawnedDefaultEffect() const;

public:
	UAnimNotify_PlayNiagaraEffectBasedOnTag();
};

FORCEINLINE uint32 GetTypeHash(const UAnimNotify_PlayNiagaraEffectBasedOnTag) { return 0; }
