#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Pawn.h"
#include "PlayerImpostor.generated.h"

class ANakedDesireCharacter;
class UClothingVisualsComponent;
class UCensorshipComponent;
class UStaticMeshComponent;

UCLASS()
class NAKEDDESIRE_API APlayerImpostor : public APawn
{
	GENERATED_BODY()

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true))
	USceneComponent* RootSceneComponent;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true))
	USkeletalMeshComponent* Mesh;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Clothing")
	UClothingVisualsComponent* ClothingVisualsComponent;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Censorship")
	UStaticMeshComponent* BoobLCensorship;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Censorship")
	UStaticMeshComponent* BoobRCensorship;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Censorship")
	UStaticMeshComponent* VaginaCensorship;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Censorship")
	UStaticMeshComponent* AnalCensorship;

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = true), Category = "Censorship")
	UCensorshipComponent* CensorshipComponent;

	UPROPERTY()
	ANakedDesireCharacter* Player;

public:
	APlayerImpostor();

	virtual void BeginPlay() override;

private:
	USkeletalMeshComponent* GetMesh() const { return Mesh; }
};