#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "UObject/NoExportTypes.h"
#include "K41ProjectilesVFX.generated.h"

class UPoolableActorComponent;

UCLASS(Blueprintable, Abstract)
class AK41ProjectilesVFX : public AActor
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UPoolableActorComponent* _poolableComponent;

private:
	UFUNCTION(BlueprintCallable)
	void OnAcquiredChanged(const bool isAcquired);

protected:
	UFUNCTION(BlueprintPure)
	TArray<FTransform> GetProjectilesTransform();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnProjectilesSpawned(const TArray<FTransform>& projectiles);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnFinished();

public:
	AK41ProjectilesVFX();
};

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