#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "WwiseGroupValueInfo.h"
#include "UObject/NoExportTypes.h"
#include "WwiseGroupValueInfoLibrary.generated.h"

UCLASS(Blueprintable)
class WWISERESOURCELOADER_API UWwiseGroupValueInfoLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintPure)
	static FWwiseGroupValueInfo SetWwiseShortId(const FWwiseGroupValueInfo& Ref, int32 WwiseShortId);

	UFUNCTION(BlueprintPure)
	static FWwiseGroupValueInfo SetWwiseName(const FWwiseGroupValueInfo& Ref, const FString& WwiseName);

	UFUNCTION(BlueprintPure)
	static FWwiseGroupValueInfo SetGroupShortId(const FWwiseGroupValueInfo& Ref, int32 GroupShortId);

	UFUNCTION(BlueprintPure)
	static FWwiseGroupValueInfo SetAssetGuid(const FWwiseGroupValueInfo& Ref, const FGuid& AssetGuid);

	UFUNCTION(BlueprintPure)
	static FWwiseGroupValueInfo MakeStruct(const FGuid& AssetGuid, int32 GroupShortId, int32 WwiseShortId, const FString& WwiseName);

	UFUNCTION(BlueprintPure)
	static int32 GetWwiseShortId(const FWwiseGroupValueInfo& Ref);

	UFUNCTION(BlueprintPure)
	static FString GetWwiseName(const FWwiseGroupValueInfo& Ref);

	UFUNCTION(BlueprintPure)
	static int32 GetGroupShortId(const FWwiseGroupValueInfo& Ref);

	UFUNCTION(BlueprintPure)
	static FGuid GetAssetGuid(const FWwiseGroupValueInfo& Ref);

	UFUNCTION(BlueprintPure)
	static void BreakStruct(FWwiseGroupValueInfo Ref, FGuid& OutAssetGuid, int32& OutGroupShortId, int32& OutWwiseShortId, FString& OutWwiseName);

public:
	UWwiseGroupValueInfoLibrary();
};

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