#pragma once

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

// Package: UniversalVoiceChatPro

#include "Basic.hpp"

#include "Engine_structs.hpp"
#include "Engine_classes.hpp"
#include "UniversalVoiceChatPro_structs.hpp"


SDK_NAMESPACE_START

// Class UniversalVoiceChatPro.AudioCaptureAndroid
// 0x0000 (0x0028 - 0x0028)
class UAudioCaptureAndroid final : public UBlueprintFunctionLibrary
{
public:
	static void AndroidAskPermission();
	static bool AndroidHasPermission();
	static bool AndroidMicrophoneStart(class UMicrophoneSpeakComponent* callbackComp, int32 sampleRateToUse);
	static void AndroidMicrophoneStop(class UMicrophoneSpeakComponent* callbackComp);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("AudioCaptureAndroid")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"AudioCaptureAndroid")
	}
	static class UAudioCaptureAndroid* GetDefaultObj()
	{
		return GetDefaultObjImpl<UAudioCaptureAndroid>();
	}
};
DUMPER7_ASSERTS_UAudioCaptureAndroid;

// Class UniversalVoiceChatPro.MicrophoneSpeakComponent
// 0x01B0 (0x0268 - 0x00B8)
class UMicrophoneSpeakComponent final : public UActorComponent
{
public:
	TMulticastInlineDelegate<void(const TArray<uint8>& Data)> OnDataMicrophoneReceived;              // 0x00B8(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(float Volume)>  OnMicrophoneVolumeReceived;                        // 0x00C8(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_D8[0x20];                                      // 0x00D8(0x0020)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         latestVolume;                                      // 0x00F8(0x0004)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_FC[0x3C];                                      // 0x00FC(0x003C)(Fixing Size After Last Property [ Dumper-7 ])
	class UAudioComponent*                        VoiceAudioComponent;                               // 0x0138(0x0008)(BlueprintVisible, ExportObject, ZeroConstructor, InstancedReference, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class USoundWaveProcedural*                   VoiceSoundWaveProcedural;                          // 0x0140(0x0008)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_148[0x120];                                    // 0x0148(0x0120)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void endSpeaking();
	float getLocallyMultiplierVolume();
	bool initAudioResources(int32 voiceSampleRate, int32 _voiceNumChannels, int32 opusFramesPerSec);
	bool isPlayingAudioVoice();
	void muteAudio(bool _isMuted);
	void payloadReceivedVoiceData(const TArray<uint8>& dataEncoded, int32 SampleRate, int32 NumChannels, int32 PCMSize, int32 opusFramePerSec);
	void RPCClientTransmitVoiceData(const TArray<uint8>& Data, int32 SampleRate, int32 NumChannels, int32 PCMSize, int32 opusFramePerSec, bool _isGlobal, const TArray<int32>& _radioChannel, bool _useRange, float _maxRange);
	void RPCReceiveVoiceFromServer(class UMicrophoneSpeakComponent* compToOutputVoice, const TArray<uint8>& dataEncoded, int32 SampleRate, int32 NumChannels, int32 PCMSize, int32 opusFramePerSec);
	void RPCServerBroadcastVoiceData(const TArray<uint8>& Data, int32 SampleRate, int32 NumChannels, int32 PCMSize, int32 opusFramePerSec);
	void setAttenuationAssetPath(bool enableAttenuation, const class FString& _pathToAttenuationAsset);
	void setLocallyMultiplierVolume(float multiplierVolume);
	void setOverrideLocallyAttenuationPath(bool enableAttenuation, bool overrideLocally, const class FString& _pathToAttenuationAsset);
	void setOverrideLocallySourceEffectPath(bool enableSourceEffect, bool overrideLocally, const class FString& _pathToSourceEffectAsset);
	void setSourceChainEffectAssetPath(bool enableSourceChainEffect, const class FString& _pathToSourceChainEffect);
	void SetVoiceVolume(float Volume);
	bool startSpeaking(bool _shouldHearMyOwnVoice, bool IsGlobal, const TArray<int32>& radioChannel, bool useRange, float MaxRange);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("MicrophoneSpeakComponent")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"MicrophoneSpeakComponent")
	}
	static class UMicrophoneSpeakComponent* GetDefaultObj()
	{
		return GetDefaultObjImpl<UMicrophoneSpeakComponent>();
	}
};
DUMPER7_ASSERTS_UMicrophoneSpeakComponent;

// Class UniversalVoiceChatPro.PlayerVoiceChatActor
// 0x0090 (0x0338 - 0x02A8)
class APlayerVoiceChatActor final : public AActor
{
public:
	class USceneComponent*                        RootSceneComponent;                                // 0x02A8(0x0008)(ExportObject, ZeroConstructor, InstancedReference, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class UMicrophoneSpeakComponent*              MicrophoneSpeakComponent;                          // 0x02B0(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, Net, ZeroConstructor, Transient, InstancedReference, RepNotify, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class APlayerState*                           ownerPlayerState;                                  // 0x02B8(0x0008)(BlueprintVisible, BlueprintReadOnly, Net, ZeroConstructor, Transient, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         idVoiceChat;                                       // 0x02C0(0x0004)(Edit, BlueprintVisible, Net, ZeroConstructor, Transient, IsPlainOldData, NoDestructor, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2C4[0x4];                                      // 0x02C4(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	class FString                                 playerName;                                        // 0x02C8(0x0010)(BlueprintVisible, BlueprintReadOnly, Net, ZeroConstructor, Transient, RepNotify, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          IsMicrophoneOn;                                    // 0x02D8(0x0001)(Edit, BlueprintVisible, Net, ZeroConstructor, Transient, IsPlainOldData, RepNotify, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2D9[0x3];                                      // 0x02D9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         voiceVolume;                                       // 0x02DC(0x0004)(BlueprintVisible, BlueprintReadOnly, Net, ZeroConstructor, Transient, IsPlainOldData, RepNotify, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	TArray<int32>                                 radioChannelSubscribed;                            // 0x02E0(0x0010)(BlueprintVisible, Net, ZeroConstructor, Transient, NativeAccessSpecifierPublic)
	class FString                                 pathToAttenuationAsset;                            // 0x02F0(0x0010)(Edit, BlueprintVisible, Net, ZeroConstructor, Transient, RepNotify, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	class FString                                 pathToSourceChainEffectAsset;                      // 0x0300(0x0010)(Edit, BlueprintVisible, Net, ZeroConstructor, Transient, RepNotify, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          ServerPerformAntiCheat;                            // 0x0310(0x0001)(BlueprintVisible, ZeroConstructor, Transient, IsPlainOldData, NoDestructor, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          AntiCheatAllowUseProximity;                        // 0x0311(0x0001)(BlueprintVisible, ZeroConstructor, Transient, IsPlainOldData, NoDestructor, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          AntiCheatAllowUseGlobal;                           // 0x0312(0x0001)(BlueprintVisible, ZeroConstructor, Transient, IsPlainOldData, NoDestructor, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_313[0x1];                                      // 0x0313(0x0001)(Fixing Size After Last Property [ Dumper-7 ])
	float                                         AntiCheatMaxProximityRange;                        // 0x0314(0x0004)(BlueprintVisible, ZeroConstructor, Transient, IsPlainOldData, NoDestructor, ExposeOnSpawn, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(const class FString& Name_0)> OnPlayerNameReceived;                // 0x0318(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(bool IsMicrophoneOn_0)> OnIsMicrophoneOnReceived;                  // 0x0328(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)

public:
	void DelegateEndPlayOwner(class AActor* act, EEndPlayReason EndPlayReason);
	float getLocallyMultiplierVolume();
	bool IsMicrophoneComponentValid();
	void muteAudio(bool isMute);
	void RepNotifyAttenuationAsset();
	void RepNotifyIsMicrophoneOn();
	void RepNotifyMicComp();
	void RepNotifyPlayerName();
	void RepNotifySourceEffectAsset();
	void RepNotifyVoiceVolume();
	void RPCClientAskAddChannel(int32 channelToAdd);
	void RPCClientAskRemoveChannel(int32 channelToRemove);
	void RPCClientSetAttenuationPath(const class FString& _attenuationPath);
	void RPCClientSetIsMicrophoneOn(bool _isMicrophoneOn);
	void RPCClientSetMicrophoneVolume(float Volume);
	void RPCClientSetPlayerName(const class FString& Name_0);
	void RPCClientSetSourceChainEffectPath(const class FString& _pathToSourceChainEffectAsset);
	void RPCServerUpdatePosAudioComp(const struct FVector& worldPos, const struct FRotator& worldRotation);
	void ServerAddChannel(int32 channelToAdd);
	void ServerRemoveChannel(int32 channelToRemove);
	void ServerSetAllowUseGlobal(bool _allowUseGlobal);
	void ServerSetAllowUseProximity(bool _allowUseRange);
	void ServerSetAttenuation(bool enableAttenuation, const class FString& _pathToAttenuationAsset);
	void ServerSetMaxProximityRange(float _maxProximityRange);
	void ServerSetSourceChainEffect(bool enableSourceChainEffect, const class FString& _pathToSourceChainEffect);
	void setLocallyMultiplierVolume(float multiplierVolume);
	void setOverrideLocallyAttenuationPath(bool enableAttenuation, bool overrideLocally, const class FString& _pathToAttenuationAsset);
	void setOverrideLocallySourceEffectPath(bool enableSourceEffect, bool overrideLocally, const class FString& _pathToSourceEffectAsset);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("PlayerVoiceChatActor")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"PlayerVoiceChatActor")
	}
	static class APlayerVoiceChatActor* GetDefaultObj()
	{
		return GetDefaultObjImpl<APlayerVoiceChatActor>();
	}
};
DUMPER7_ASSERTS_APlayerVoiceChatActor;

// Class UniversalVoiceChatPro.UniversalVoiceChat
// 0x0000 (0x0028 - 0x0028)
class UUniversalVoiceChat final : public UBlueprintFunctionLibrary
{
public:
	static bool IsMyPlayerVoiceChatActorReady();
	static void RegisterCallbackDeleteVoiceChatActor(const TDelegate<void(const class APlayerVoiceChatActor* VoiceChatActor)>& Delegate);
	static void RegisterCallbackMyVoiceChatActorReady(const TDelegate<void(const class APlayerVoiceChatActor* VoiceChatActor)>& Delegate);
	static void RegisterCallbackNewVoiceChatActor(const TDelegate<void(const class APlayerVoiceChatActor* VoiceChatActor)>& Delegate);
	static bool VoiceChatAddChannel(int32 channelToAdd);
	static void VoiceChatAskMicrophonePermission();
	static bool VoiceChatCheckRegisteredToChannel(int32 channelToCheck);
	static bool VoiceChatEnableShouldHearMyOwnVoice(bool Enable);
	static class APlayerVoiceChatActor* VoiceChatGetActorFromPlayerState(const class UObject* WorldContextObject, class APlayerState* fromPlayerState);
	static void VoiceChatGetAudioDevicesList(TArray<class FString>* OutDevices);
	static float VoiceChatGetMicrophoneRuntimeVolumeFromPlayerState(const class UObject* WorldContextObject, class APlayerState* fromPlayerState);
	static bool VoiceChatGetMuteAllPlayers();
	static class APlayerVoiceChatActor* VoiceChatGetMyLocalPlayerVoiceChat();
	static bool VoiceChatHasMicrophonePermission();
	static bool VoiceChatInitAudioVoiceChatQuality(int32 _sampleRate, int32 _numChannels, EOpusFramePerSec _opusFramePerSec);
	static bool VoiceChatIsSpeaking();
	static bool VoiceChatLocalIsMutedSomeone(const class UObject* WorldContextObject, class APlayerState* playerToCheckMute);
	static void VoiceChatLocalMuteSomeone(const class UObject* WorldContextObject, class APlayerState* playerToMute, bool shouldMute);
	static bool VoiceChatRemoveChannel(int32 channelToRemove);
	static bool VoiceChatSetAttenuationPath(bool enableAttenuation, const class FString& _attenuationPath);
	static void VoiceChatSetDefaultTickRateUpdateLocation(float tickRate);
	static void VoiceChatSetGlobalVolume(float globalVolume);
	static void VoiceChatSetHardwareAudioInput(const class FString& audioInputDeviceName);
	static bool VoiceChatSetMicrophoneVolume(float Volume);
	static void VoiceChatSetMuteAllPlayers(bool _muteAll);
	static bool VoiceChatSetPlayerName(const class FString& Name_0);
	static void VoiceChatSetRawMicrophoneGain(float Gain);
	static bool VoiceChatSetSourceChainEffectPath(bool enableSourceChainEffect, const class FString& _pathToSourceChainEffectAsset);
	static void VoiceChatSetThresholdSendData(float thresholdSendData);
	static bool VoiceChatStartSpeak(bool _shouldHearMyOwnVoice, bool IsGlobal, int32 radioChannel, bool useProximity, float maxProximityRange);
	static bool VoiceChatStartSpeakTeamArray(bool _shouldHearMyOwnVoice, bool IsGlobal, const TArray<int32>& radioChannel, bool useProximity, float maxProximityRange);
	static bool VoiceChatStopSpeak();
	static void VoiceChatUseAndroidCommunicationMode(bool use);
	static bool VoiceChatWasInitAudioVoiceChatQuality();

	float VoiceChatGetSomeoneLocallyMultiplierVolume(const class UObject* WorldContextObject, class APlayerState* playerToOverride);
	void VoiceChatSetSomeoneLocallyMultiplierVolume(const class UObject* WorldContextObject, float multiplierVolume, class APlayerState* playerToOverride);
	void VoiceChatSetSomeoneOverrideLocallyAttenuationPath(const class UObject* WorldContextObject, bool enableAttenuation, bool overrideLocally, const class FString& _pathToAttenuationAsset, class APlayerState* playerToOverride);
	void VoiceChatSetSomeoneOverrideLocallySourceEffectPath(const class UObject* WorldContextObject, bool enableSourceEffect, bool overrideLocally, const class FString& _pathToSourceEffectAsset, class APlayerState* playerToOverride);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("UniversalVoiceChat")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"UniversalVoiceChat")
	}
	static class UUniversalVoiceChat* GetDefaultObj()
	{
		return GetDefaultObjImpl<UUniversalVoiceChat>();
	}
};
DUMPER7_ASSERTS_UUniversalVoiceChat;

SDK_NAMESPACE_END
