Files
UnrealEngine/Engine/Plugins/AudioInsights/Source/AudioInsightsEditor/Private/Views/AudioMeterView.h
2025-05-18 13:04:45 +08:00

47 lines
1.4 KiB
C++

// 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<FAudioMeterView>
{
public:
using FAudioAssetVariant = TVariant<TWeakObjectPtr<UAudioBus>, TWeakObjectPtr<USoundSubmix>>;
using FAudioMeterVariant = TVariant<TSharedPtr<FAudioMeterAnalyzer>, TSharedPtr<FAudioMeterSubmixAnalyzer>>;
FAudioMeterView(FAudioAssetVariant InAudioAssetVariant);
virtual ~FAudioMeterView();
TSharedRef<SWidget> GetWidget() const { return AudioMeterViewWidget; };
private:
FAudioMeterVariant MakeAudioMeterAnalyzerVariant(const FAudioAssetVariant InAudioAssetVariant);
TSharedRef<STextBlock> MakeAudioAssetNameTextBlock(const FAudioAssetVariant InAudioAssetVariant);
TSharedRef<SWidget> MakeWidget();
TSharedRef<SWidget> GetAudioMeterAnalyzerWidget() const;
void HandleOnActiveAudioDeviceChanged();
FAudioAssetVariant AudioAssetVariant;
FAudioMeterVariant AudioMeterAnalyzerVariant;
TSharedRef<STextBlock> AudioAssetNameTextBlock;
TSharedRef<SWidget> AudioMeterViewWidget;
FDelegateHandle OnActiveAudioDeviceChangedHandle;
};
} // namespace UE::Audio::Insights