#pragma once

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

class UPostProcessComponent;
class USkyLightComponent;
class UExponentialHeightFogComponent;
class UStaticMeshComponent;
class UDBDCullDistanceVolumeComponent;
class UDirectionalLightComponent;
class UGMAdaptiveShadowMapSourceComponent;
class USceneCaptureComponent2D;

UCLASS(Blueprintable)
class GRAPHICSEXTENSIONS_API AGMAmbianceManagerActor : public AActor
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UPostProcessComponent* PostProcessVolume;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	USkyLightComponent* SkyLight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UExponentialHeightFogComponent* HeightFog;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UStaticMeshComponent* SkyDome;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UDBDCullDistanceVolumeComponent* DBDCullDistanceVolume;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UDirectionalLightComponent* DirectionalLight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UGMAdaptiveShadowMapSourceComponent* AdaptiveShadowMapSource;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	USceneCaptureComponent2D* SceneCaptureComponent;

public:
	AGMAmbianceManagerActor();
};

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