#pragma once

#include "CoreMinimal.h"
#include "EHoudiniXformType.h"
#include "EHoudiniLandscapeExportType.h"
#include "HoudiniInputObjectSettings.generated.h"

USTRUCT(BlueprintType)
struct FHoudiniInputObjectSettings
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EHoudiniXformType KeepWorldTransform;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bImportAsReference;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bImportAsReferenceRotScaleEnabled;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bImportAsReferenceBboxEnabled;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bImportAsReferenceMaterialEnabled;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportLODs;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportSockets;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bPreferNaniteFallbackMesh;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportColliders;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportMaterialParameters;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bAddRotAndScaleAttributesOnCurves;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bUseLegacyInputCurves;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float UnrealSplineResolution;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EHoudiniLandscapeExportType LandscapeExportType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeExportSelectionOnly;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeAutoSelectComponent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeExportMaterials;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeExportLighting;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeExportNormalizedUVs;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeExportTileUVs;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeAutoSelectSplines;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeSplinesExportControlPoints;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeSplinesExportLeftRightCurves;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bLandscapeSplinesExportSplineMeshComponents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bMergeSplineMeshComponents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportHeightDataPerEditLayer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportPaintLayersPerEditLayer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportMergedPaintLayers;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bExportLevelInstanceContent;

public:
	HOUDINIENGINERUNTIME_API FHoudiniInputObjectSettings();
};

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