#pragma once

#include "CoreMinimal.h"
#include "PoolableActor.h"
#include "GameFramework/Actor.h"
#include "PooledActor.generated.h"

UCLASS(Blueprintable)
class GAMEPLAYUTILITIES_API APooledActor : public AActor, public IPoolableActor
{
	GENERATED_BODY()

protected:
	UFUNCTION(BlueprintCallable)
	void RequestRelease();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void OnUnacquired();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void OnAcquired();

public:
	APooledActor();
};

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