#pragma once

#include "CoreMinimal.h"
#include "HoudiniInputSceneComponent.h"
#include "HoudiniLandscapeSplineControlPointData.h"
#include "HoudiniLandscapeSplineSegmentData.h"
#include "UObject/SoftObjectPtr.h"
#include "HoudiniInputLandscapeSplinesComponent.generated.h"

class ULandscapeSplineControlPoint;

UCLASS(Blueprintable)
class HOUDINIENGINERUNTIME_API UHoudiniInputLandscapeSplinesComponent : public UHoudiniInputSceneComponent
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FHoudiniLandscapeSplineControlPointData> CachedControlPoints;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FHoudiniLandscapeSplineSegmentData> CachedSegments;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TMap<TSoftObjectPtr<ULandscapeSplineControlPoint>, int32> ControlPointIdMap;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 NextControlPointId;

public:
	UHoudiniInputLandscapeSplinesComponent();
};

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