// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "AudioInsightsEditorDashboardFactory.h" #include "AudioInsightsTraceModule.h" #include "Framework/Docking/TabManager.h" #include "IAudioInsightsEditorModule.h" #include "Templates/SharedPointer.h" #include "Views/DashboardViewFactory.h" #include "Views/MixerSourceMuteSoloFilter.h" #include "Views/VirtualLoopsDebugDraw.h" #include "Widgets/Docking/SDockTab.h" namespace UE::Audio::Insights { class FAudioInsightsEditorModule final : public IAudioInsightsEditorModule { public: FAudioInsightsEditorModule() = default; virtual ~FAudioInsightsEditorModule() = default; virtual void StartupModule() override; virtual void ShutdownModule() override; virtual void RegisterDashboardViewFactory(TSharedRef InDashboardFactory) override; virtual void UnregisterDashboardViewFactory(FName InName) override; virtual ::Audio::FDeviceId GetDeviceId() const override; TSharedRef GetDashboardFactory(); const TSharedRef GetDashboardFactory() const; static bool IsModuleLoaded(); static FAudioInsightsEditorModule& GetChecked(); virtual IAudioInsightsTraceModule& GetTraceModule() override; private: void RegisterMenus(); TSharedRef CreateDashboardTabWidget(const FSpawnTabArgs& Args); inline static const FName AudioInsightsEditorModuleName = "AudioInsightsEditor"; TSharedPtr DashboardFactory; FVirtualLoopsDebugDraw VirtualLoopsDebugDraw; FMuteSoloFilter MuteSoloFilter; }; } // namespace UE::Audio::Insights