#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Templates/SubclassOf.h"
#include "EAnimationLayerConditionUpdateType.h"
#include "GameplayTagContainer.h"
#include "AnimationLayerData.generated.h"

class UAnimInstance;
class UAnimationLayerCondition;

UCLASS(Blueprintable, DefaultToInstanced, EditInlineNew)
class UAnimationLayerData : public UObject
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName Name;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSubclassOf<UAnimInstance> AnimInstance;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EAnimationLayerConditionUpdateType LinkingConditionUpdateType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FGameplayTagContainer LinkingConditionGameEventTags;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UAnimationLayerCondition* LinkingCondition;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EAnimationLayerConditionUpdateType UnLinkingConditionUpdateType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	UAnimationLayerCondition* UnLinkingCondition;

public:
	UAnimationLayerData();
};

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