#pragma once

#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "ComponentPoolElement.h"
#include "Templates/SubclassOf.h"
#include "ComponentPoolComponent.generated.h"

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class GAMEPLAYUTILITIES_API UComponentPoolComponent : public UActorComponent
{
	GENERATED_BODY()

private:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TArray<FComponentPoolElement> _pool;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TSubclassOf<UActorComponent> _componentClass;

public:
	UComponentPoolComponent();
};

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