#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AnimationMontageDescriptor.h"
#include "GeneratorEntity.generated.h"

class UObject;
class UMontagePlayer;

UCLASS(Blueprintable)
class DEADBYDAYLIGHT_API AGeneratorEntity : public AActor
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UObject* _associatedGenerator;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export, meta=(AllowPrivateAccess=true))
	UMontagePlayer* _montagePlayer;

public:
	UFUNCTION(BlueprintCallable)
	void SetSkeletalMeshActive(bool active);

	UFUNCTION(BlueprintCallable)
	void SetAssociatedGenerator(UObject* generator);

	UFUNCTION(BlueprintCallable)
	void PlayMontage(FAnimationMontageDescriptor animMontageID, float playRate, bool isFollower);

	UFUNCTION(BlueprintPure)
	UMontagePlayer* GetMontagePlayer() const;

public:
	AGeneratorEntity();
};

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