#pragma once

#include "CoreMinimal.h"
#include "HoudiniInputObject.h"
#include "UObject/SoftObjectPtr.h"
#include "UObject/NoExportTypes.h"
#include "HoudiniInputActor.generated.h"

class UHoudiniInputSceneComponent;
class UObject;
class UStaticMesh;

UCLASS(Blueprintable)
class HOUDINIENGINERUNTIME_API UHoudiniInputActor : public UHoudiniInputObject
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 SplinesMeshObjectNodeId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 SplinesMeshNodeId;

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<UHoudiniInputSceneComponent*> ActorComponents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<TSoftObjectPtr<UObject>> ActorSceneComponents;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 LastUpdateNumComponentsAdded;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 LastUpdateNumComponentsRemoved;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 NumSplineMeshComponents;

	UPROPERTY(EditAnywhere)
	FGuid GeneratedSplinesMeshPackageGuid;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UStaticMesh* GeneratedSplinesMesh;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bUsedMergeSplinesMeshAtLastTranslate;

public:
	UHoudiniInputActor();
};

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