#pragma once

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

class UBhvrAssetLightGroup;
class ULightComponent;

UCLASS(Blueprintable, Abstract)
class BHVRASSETVIEWER_API ABhvrAssetLightingRig : public AActor
{
	GENERATED_BODY()

public:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UBhvrAssetLightGroup* KeyLightGroup;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UBhvrAssetLightGroup* FillLightGroup;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UBhvrAssetLightGroup* RimLightGroup;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UBhvrAssetLightGroup* KickLightGroup;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	UBhvrAssetLightGroup* FogLightGroup;

public:
	UFUNCTION(BlueprintPure, BlueprintNativeEvent)
	FString GetDisplayName() const;

protected:
	UFUNCTION(BlueprintCallable)
	void AddRimLight(ULightComponent* InLight);

	UFUNCTION(BlueprintCallable)
	void AddKickLight(ULightComponent* InLight);

	UFUNCTION(BlueprintCallable)
	void AddKeyLight(ULightComponent* InLight);

	UFUNCTION(BlueprintCallable)
	void AddFogLight(ULightComponent* InLight);

	UFUNCTION(BlueprintCallable)
	void AddFillLight(ULightComponent* InLight);

public:
	ABhvrAssetLightingRig();
};

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