// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "AudioDefines.h" #include "Messages/AnalyzerMessageQueue.h" #include "Trace/Analyzer.h" #include "Views/TableDashboardViewFactory.h" class UAudioBus; namespace UE::Audio::Insights { enum class EAudioBusEntryType : uint8 { AssetBased, CodeGenerated, None }; struct FAudioBusMessageBase { FAudioBusMessageBase() = default; FAudioBusMessageBase(const UE::Trace::IAnalyzer::FOnEventContext& InContext) { const UE::Trace::IAnalyzer::FEventData& EventData = InContext.EventData; DeviceId = static_cast<::Audio::FDeviceId>(EventData.GetValue("DeviceId")); AudioBusId = EventData.GetValue("AudioBusId"); Timestamp = InContext.EventTime.AsSeconds(EventData.GetValue("Timestamp")); } ::Audio::FDeviceId DeviceId = INDEX_NONE; uint32 AudioBusId = INDEX_NONE; double Timestamp = 0.0; }; struct FAudioBusActivateMessage : public FAudioBusMessageBase { FAudioBusActivateMessage() = default; FAudioBusActivateMessage(const UE::Trace::IAnalyzer::FOnEventContext& InContext) : FAudioBusMessageBase(InContext) { const UE::Trace::IAnalyzer::FEventData& EventData = InContext.EventData; EventData.GetString("Name", Name); } FString Name; }; using FAudioBusDeactivateMessage = FAudioBusMessageBase; struct FAudioBusHasActivityMessage : public FAudioBusMessageBase { FAudioBusHasActivityMessage() = default; FAudioBusHasActivityMessage(const UE::Trace::IAnalyzer::FOnEventContext& InContext) : FAudioBusMessageBase(InContext) { const UE::Trace::IAnalyzer::FEventData& EventData = InContext.EventData; bHasActivity = EventData.GetValue("HasActivity"); } bool bHasActivity = false; }; class FAudioBusMessages { UE::Audio::Insights::TAnalyzerMessageQueue ActivateMessages{ 0.1 }; UE::Audio::Insights::TAnalyzerMessageQueue DeactivateMessages{ 0.1 }; UE::Audio::Insights::TAnalyzerMessageQueue HasActivityMessages{ 0.1 }; friend class FAudioBusProvider; }; struct FAudioBusAssetDashboardEntry : public UE::Audio::Insights::FSoundAssetDashboardEntry { FAudioBusAssetDashboardEntry() = default; virtual ~FAudioBusAssetDashboardEntry() = default; EAudioBusEntryType EntryType = EAudioBusEntryType::None; TWeakObjectPtr AudioBus; uint32 AudioBusId = INDEX_NONE; bool bHasActivity = false; }; } // namespace UE::Audio::Insights