#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "ACLVisualFidelity.h"
#include "Engine/LatentActionManager.h"
#include "ACLVisualFidelityChangeResult.h"
#include "AnimationCompressionLibraryDatabase.generated.h"

class UAnimationCompressionLibraryDatabase;

UCLASS(Blueprintable, MinimalAPI)
class UAnimationCompressionLibraryDatabase : public UObject
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TArray<uint8> CookedCompressedBytes;

	UPROPERTY(EditAnywhere)
	TArray<uint64> CookedAnimSequenceMappings;

	UPROPERTY(EditAnywhere)
	uint32 MaxStreamRequestSizeKB;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	ACLVisualFidelity DefaultVisualFidelity;

public:
	UFUNCTION(BlueprintCallable)
	static void SetVisualFidelity(UObject* WorldContextObject, FLatentActionInfo LatentInfo, UAnimationCompressionLibraryDatabase* DatabaseAsset, ACLVisualFidelityChangeResult& Result, ACLVisualFidelity VisualFidelity);

	UFUNCTION(BlueprintCallable)
	static ACLVisualFidelity GetVisualFidelity(UAnimationCompressionLibraryDatabase* DatabaseAsset);

public:
	UAnimationCompressionLibraryDatabase();
};

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