#pragma once

#include "CoreMinimal.h"
#include "WeatherParams.h"
#include "FXParams.h"
#include "AmbianceManagerParams.generated.h"

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

USTRUCT(BlueprintType)
struct FAmbianceManagerParams
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere)
	uint32 _signature;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UPostProcessComponent* _postProcessComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UDirectionalLightComponent* _directionalLightComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	USkyLightComponent* _skyLightComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UExponentialHeightFogComponent* _heightFogComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UStaticMeshComponent* _skyDomeComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UGMAdaptiveShadowMapSourceComponent* _adaptiveShadowMapSourceComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	UDBDCullDistanceVolumeComponent* _dbdCullDistanceVolumeComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FWeatherParams _weatherParams;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	FFXParams _fxParams;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _transitionDuration;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	UCurveFloat* _transitionCurve;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsPostProcessOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsDirectionalLightOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsSkyLightOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsSkyDomeOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsFogOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsASMOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsCullVolumeOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsWeatherOverridden;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	bool _bIsFXOverridden;

public:
	GRAPHICSEXTENSIONS_API FAmbianceManagerParams();
};

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