// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Templates/SharedPointer.h" #include "UObject/WeakObjectPtr.h" #include "Widgets/SWidget.h" #include "Widgets/Text/STextBlock.h" class UAudioBus; class USoundSubmix; namespace UE::Audio::Insights { class FAudioMeterAnalyzer; class FAudioMeterSubmixAnalyzer; class FAudioMeterView : public TSharedFromThis { public: using FAudioAssetVariant = TVariant, TWeakObjectPtr>; using FAudioMeterVariant = TVariant, TSharedPtr>; FAudioMeterView(FAudioAssetVariant InAudioAssetVariant); virtual ~FAudioMeterView(); TSharedRef GetWidget() const { return AudioMeterViewWidget; }; private: FAudioMeterVariant MakeAudioMeterAnalyzerVariant(const FAudioAssetVariant InAudioAssetVariant); TSharedRef MakeAudioAssetNameTextBlock(const FAudioAssetVariant InAudioAssetVariant); TSharedRef MakeWidget(); TSharedRef GetAudioMeterAnalyzerWidget() const; void HandleOnActiveAudioDeviceChanged(); FAudioAssetVariant AudioAssetVariant; FAudioMeterVariant AudioMeterAnalyzerVariant; TSharedRef AudioAssetNameTextBlock; TSharedRef AudioMeterViewWidget; FDelegateHandle OnActiveAudioDeviceChangedHandle; }; } // namespace UE::Audio::Insights