// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "PropertyHandle.h" #include "DetailLayoutBuilder.h" #include "AudioPluginUtilities.h" class AUDIOSETTINGSEDITOR_API FAudioPluginWidgetManager { public: FAudioPluginWidgetManager(); ~FAudioPluginWidgetManager(); /* Builds out the audio category for a specific audio section for a platform settings page. */ 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. */ TSharedRef MakeAudioPluginSelectorWidget(const TSharedPtr& PropertyHandle, EAudioPlugin AudioPluginType, const FString& PlatformName); private: /** Handles when a new plugin is selected. */ static void OnPluginSelected(FString PluginName, TSharedPtr PropertyHandle); void OnPluginTextCommitted(const FText& InText, ETextCommit::Type CommitType, EAudioPlugin AudioPluginType, TSharedPtr PropertyHandle); 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; };