#pragma once

/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/

// Package: TimeSynth

#include "Basic.hpp"

#include "TimeSynth_classes.hpp"
#include "TimeSynth_parameters.hpp"


namespace SDK
{

// Function TimeSynth.TimeSynthComponent.AddQuantizationEventDelegate
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// ETimeSynthEventQuantization             QuantizationType                                       (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// TDelegate<void(ETimeSynthEventQuantization QuantizationType, int32 NumBars, float Beat)>OnQuantizationEvent                                    (ConstParm, Parm, OutParm, ZeroConstructor, ReferenceParm, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::AddQuantizationEventDelegate(ETimeSynthEventQuantization QuantizationType, const TDelegate<void(ETimeSynthEventQuantization QuantizationType, int32 NumBars, float Beat)>& OnQuantizationEvent)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "AddQuantizationEventDelegate");

	Params::TimeSynthComponent_AddQuantizationEventDelegate Parms{};

	Parms.QuantizationType = QuantizationType;
	Parms.OnQuantizationEvent = OnQuantizationEvent;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.PlayClip
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// class UTimeSynthClip*                   InClip                                                 (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// class UTimeSynthVolumeGroup*            InVolumeGroup                                          (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// struct FTimeSynthClipHandle             ReturnValue                                            (Parm, OutParm, ReturnParm, NoDestructor, NativeAccessSpecifierPublic)

struct FTimeSynthClipHandle UTimeSynthComponent::PlayClip(class UTimeSynthClip* InClip, class UTimeSynthVolumeGroup* InVolumeGroup)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "PlayClip");

	Params::TimeSynthComponent_PlayClip Parms{};

	Parms.InClip = InClip;
	Parms.InVolumeGroup = InVolumeGroup;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;

	return Parms.ReturnValue;
}


// Function TimeSynth.TimeSynthComponent.ResetSeed
// (Final, Native, Public, BlueprintCallable)

void UTimeSynthComponent::ResetSeed()
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "ResetSeed");

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, nullptr);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetBPM
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// float                                   BeatsPerMinute                                         (ConstParm, Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetBPM(const float BeatsPerMinute)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetBPM");

	Params::TimeSynthComponent_SetBPM Parms{};

	Parms.BeatsPerMinute = BeatsPerMinute;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetEnvelopeFollowerEnabled
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// bool                                    bInIsEnabled                                           (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetEnvelopeFollowerEnabled(bool bInIsEnabled)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetEnvelopeFollowerEnabled");

	Params::TimeSynthComponent_SetEnvelopeFollowerEnabled Parms{};

	Parms.bInIsEnabled = bInIsEnabled;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetEnvelopeFollowerSettings
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// struct FTimeSynthEnvelopeFollowerSettingsInSettings                                             (ConstParm, Parm, OutParm, ZeroConstructor, ReferenceParm, IsPlainOldData, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetEnvelopeFollowerSettings(const struct FTimeSynthEnvelopeFollowerSettings& InSettings)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetEnvelopeFollowerSettings");

	Params::TimeSynthComponent_SetEnvelopeFollowerSettings Parms{};

	Parms.InSettings = std::move(InSettings);

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetFFTSize
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// ETimeSynthFFTSize                       InFFTSize                                              (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetFFTSize(ETimeSynthFFTSize InFFTSize)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetFFTSize");

	Params::TimeSynthComponent_SetFFTSize Parms{};

	Parms.InFFTSize = InFFTSize;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetFilterEnabled
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// ETimeSynthFilter                        Filter                                                 (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// bool                                    bIsEnabled                                             (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetFilterEnabled(ETimeSynthFilter Filter, bool bIsEnabled)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetFilterEnabled");

	Params::TimeSynthComponent_SetFilterEnabled Parms{};

	Parms.Filter = Filter;
	Parms.bIsEnabled = bIsEnabled;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetFilterSettings
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// ETimeSynthFilter                        Filter                                                 (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// struct FTimeSynthFilterSettings         InSettings                                             (ConstParm, Parm, OutParm, ZeroConstructor, ReferenceParm, IsPlainOldData, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetFilterSettings(ETimeSynthFilter Filter, const struct FTimeSynthFilterSettings& InSettings)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetFilterSettings");

	Params::TimeSynthComponent_SetFilterSettings Parms{};

	Parms.Filter = Filter;
	Parms.InSettings = std::move(InSettings);

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetQuantizationSettings
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// struct FTimeSynthQuantizationSettings   InQuantizationSettings                                 (ConstParm, Parm, OutParm, ReferenceParm, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetQuantizationSettings(const struct FTimeSynthQuantizationSettings& InQuantizationSettings)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetQuantizationSettings");

	Params::TimeSynthComponent_SetQuantizationSettings Parms{};

	Parms.InQuantizationSettings = std::move(InQuantizationSettings);

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetSeed
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// int32                                   InSeed                                                 (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetSeed(int32 InSeed)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetSeed");

	Params::TimeSynthComponent_SetSeed Parms{};

	Parms.InSeed = InSeed;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.SetVolumeGroup
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// class UTimeSynthVolumeGroup*            InVolumeGroup                                          (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// float                                   VolumeDb                                               (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// float                                   FadeTimeSec                                            (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::SetVolumeGroup(class UTimeSynthVolumeGroup* InVolumeGroup, float VolumeDb, float FadeTimeSec)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "SetVolumeGroup");

	Params::TimeSynthComponent_SetVolumeGroup Parms{};

	Parms.InVolumeGroup = InVolumeGroup;
	Parms.VolumeDb = VolumeDb;
	Parms.FadeTimeSec = FadeTimeSec;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.StopClip
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// struct FTimeSynthClipHandle             InClipHandle                                           (Parm, NoDestructor, NativeAccessSpecifierPublic)
// ETimeSynthEventClipQuantization         EventQuantization                                      (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::StopClip(const struct FTimeSynthClipHandle& InClipHandle, ETimeSynthEventClipQuantization EventQuantization)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "StopClip");

	Params::TimeSynthComponent_StopClip Parms{};

	Parms.InClipHandle = std::move(InClipHandle);
	Parms.EventQuantization = EventQuantization;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.StopClipWithFadeOverride
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// struct FTimeSynthClipHandle             InClipHandle                                           (Parm, NoDestructor, NativeAccessSpecifierPublic)
// ETimeSynthEventClipQuantization         EventQuantization                                      (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// struct FTimeSynthTimeDef                FadeTime                                               (ConstParm, Parm, OutParm, ReferenceParm, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::StopClipWithFadeOverride(const struct FTimeSynthClipHandle& InClipHandle, ETimeSynthEventClipQuantization EventQuantization, const struct FTimeSynthTimeDef& FadeTime)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "StopClipWithFadeOverride");

	Params::TimeSynthComponent_StopClipWithFadeOverride Parms{};

	Parms.InClipHandle = std::move(InClipHandle);
	Parms.EventQuantization = EventQuantization;
	Parms.FadeTime = std::move(FadeTime);

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.StopSoundsOnVolumeGroup
// (Final, Native, Public, BlueprintCallable)
// Parameters:
// class UTimeSynthVolumeGroup*            InVolumeGroup                                          (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// ETimeSynthEventClipQuantization         EventQuantization                                      (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

void UTimeSynthComponent::StopSoundsOnVolumeGroup(class UTimeSynthVolumeGroup* InVolumeGroup, ETimeSynthEventClipQuantization EventQuantization)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "StopSoundsOnVolumeGroup");

	Params::TimeSynthComponent_StopSoundsOnVolumeGroup Parms{};

	Parms.InVolumeGroup = InVolumeGroup;
	Parms.EventQuantization = EventQuantization;

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.StopSoundsOnVolumeGroupWithFadeOverride
// (Final, Native, Public, HasOutParams, BlueprintCallable)
// Parameters:
// class UTimeSynthVolumeGroup*            InVolumeGroup                                          (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// ETimeSynthEventClipQuantization         EventQuantization                                      (Parm, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
// struct FTimeSynthTimeDef                FadeTime                                               (ConstParm, Parm, OutParm, ReferenceParm, NoDestructor, NativeAccessSpecifierPublic)

void UTimeSynthComponent::StopSoundsOnVolumeGroupWithFadeOverride(class UTimeSynthVolumeGroup* InVolumeGroup, ETimeSynthEventClipQuantization EventQuantization, const struct FTimeSynthTimeDef& FadeTime)
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "StopSoundsOnVolumeGroupWithFadeOverride");

	Params::TimeSynthComponent_StopSoundsOnVolumeGroupWithFadeOverride Parms{};

	Parms.InVolumeGroup = InVolumeGroup;
	Parms.EventQuantization = EventQuantization;
	Parms.FadeTime = std::move(FadeTime);

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;
}


// Function TimeSynth.TimeSynthComponent.GetBPM
// (Final, Native, Public, BlueprintCallable, BlueprintPure, Const)
// Parameters:
// int32                                   ReturnValue                                            (Parm, OutParm, ZeroConstructor, ReturnParm, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

int32 UTimeSynthComponent::GetBPM() const
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "GetBPM");

	Params::TimeSynthComponent_GetBPM Parms{};

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;

	return Parms.ReturnValue;
}


// Function TimeSynth.TimeSynthComponent.GetEnvelopeFollowerValue
// (Final, Native, Public, BlueprintCallable, BlueprintPure, Const)
// Parameters:
// float                                   ReturnValue                                            (Parm, OutParm, ZeroConstructor, ReturnParm, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)

float UTimeSynthComponent::GetEnvelopeFollowerValue() const
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "GetEnvelopeFollowerValue");

	Params::TimeSynthComponent_GetEnvelopeFollowerValue Parms{};

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;

	return Parms.ReturnValue;
}


// Function TimeSynth.TimeSynthComponent.GetSpectralData
// (Final, Native, Public, BlueprintCallable, BlueprintPure, Const)
// Parameters:
// TArray<struct FTimeSynthSpectralData>   ReturnValue                                            (Parm, OutParm, ZeroConstructor, ReturnParm, NativeAccessSpecifierPublic)

TArray<struct FTimeSynthSpectralData> UTimeSynthComponent::GetSpectralData() const
{
	static class UFunction* Func = nullptr;

	if (Func == nullptr)
		Func = Class->GetFunction("TimeSynthComponent", "GetSpectralData");

	Params::TimeSynthComponent_GetSpectralData Parms{};

	auto Flgs = Func->FunctionFlags;
	Func->FunctionFlags |= 0x400;

	UObject::ProcessEvent(Func, &Parms);

	Func->FunctionFlags = Flgs;

	return Parms.ReturnValue;
}

}

