#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DBDPlayerCosmeticHelperActor.generated.h"

class ADBDPlayer;
class UMaterialHelper;
class UCustomizedSkeletalMesh;
class UAkComponent;

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

protected:
	UFUNCTION(BlueprintPure)
	bool IsLocallyObserved() const;

	UFUNCTION(BlueprintPure)
	ADBDPlayer* GetPlayer() const;

	UFUNCTION(BlueprintPure)
	UMaterialHelper* GetMaterialHelper() const;

	UFUNCTION(BlueprintPure)
	UCustomizedSkeletalMesh* GetCustomizedSkeletalMesh() const;

	UFUNCTION(BlueprintPure)
	UAkComponent* GetAudioComponent() const;

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnPlayerLinked(ADBDPlayer* playerLinked);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnIsLocallyObservingPlayerChanged(bool isLocallyObservingPlayer);

public:
	ADBDPlayerCosmeticHelperActor();
};

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