// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "PropertyHandle.h" #include "DetailLayoutBuilder.h" #include "AudioPluginUtilities.h" #define UE_API AUDIOSETTINGSEDITOR_API class FAudioPluginWidgetManager { public: UE_API FAudioPluginWidgetManager(); UE_API ~FAudioPluginWidgetManager(); /* Builds out the audio category for a specific audio section for a platform settings page. */ UE_API void BuildAudioCategory(IDetailLayoutBuilder& DetailLayout, const FString& PlatformName, const UStruct* ClassOuterMost = nullptr); /** Creates widget from a scan of loaded audio plugins for an individual plugin type. */ UE_API TSharedRef MakeAudioPluginSelectorWidget(const TSharedPtr& PropertyHandle, EAudioPlugin AudioPluginType, const FString& PlatformName); private: /** Handles when a new plugin is selected. */ static UE_API void OnPluginSelected(FString PluginName, TSharedPtr PropertyHandle); UE_API void OnPluginTextCommitted(const FText& InText, ETextCommit::Type CommitType, EAudioPlugin AudioPluginType, TSharedPtr PropertyHandle); UE_API FText OnGetPluginText(EAudioPlugin AudioPluginType); private: /** Cached references to text for Spatialization, Reverb and Occlusion settings */ TSharedPtr SelectedReverb; TSharedPtr SelectedSpatialization; TSharedPtr SelectedOcclusion; TSharedPtr SelectedSourceDataOverride; TSharedPtr ManualSpatializationEntry; TSharedPtr ManualReverbEntry; TSharedPtr ManualOcclusionEntry; TSharedPtr ManualSourceDataOverrideEntry; TArray> SpatializationPlugins; TArray> SourceDataOverridePlugins; TArray> ReverbPlugins; TArray> OcclusionPlugins; }; #undef UE_API