2021-01-09 18:31:09 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#include "AudioAnalyzerSubsystem.h"
|
|
|
|
|
#include "Engine/World.h"
|
2021-03-10 13:15:36 -04:00
|
|
|
#include "Engine/Engine.h"
|
2021-01-09 18:31:09 -04:00
|
|
|
|
|
|
|
|
UAudioAnalyzerSubsystem::UAudioAnalyzerSubsystem()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UAudioAnalyzerSubsystem::~UAudioAnalyzerSubsystem()
|
|
|
|
|
{
|
|
|
|
|
AudioAnalyzers.Reset();
|
|
|
|
|
}
|
|
|
|
|
|
2021-03-06 01:58:21 -04:00
|
|
|
UAudioAnalyzerSubsystem* UAudioAnalyzerSubsystem::Get()
|
2021-01-09 18:31:09 -04:00
|
|
|
{
|
2021-03-06 01:58:21 -04:00
|
|
|
if (GEngine)
|
2021-01-09 18:31:09 -04:00
|
|
|
{
|
2021-03-06 01:58:21 -04:00
|
|
|
return GEngine->GetEngineSubsystem<UAudioAnalyzerSubsystem>();
|
2021-01-09 18:31:09 -04:00
|
|
|
}
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TStatId UAudioAnalyzerSubsystem::GetStatId() const
|
|
|
|
|
{
|
|
|
|
|
RETURN_QUICK_DECLARE_CYCLE_STAT(UAudioAnalyzerSubsystem, STATGROUP_Tickables);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UAudioAnalyzerSubsystem::Tick(float DeltaTime)
|
|
|
|
|
{
|
|
|
|
|
// Loop through all analyzers and if they're ready to analyze, do it
|
|
|
|
|
for (UAudioAnalyzer* Analyzer : AudioAnalyzers)
|
|
|
|
|
{
|
|
|
|
|
if (Analyzer->IsReadyForAnalysis())
|
|
|
|
|
{
|
|
|
|
|
if (Analyzer->DoAnalysis())
|
|
|
|
|
{
|
|
|
|
|
Analyzer->BroadcastResults();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool UAudioAnalyzerSubsystem::IsTickable() const
|
|
|
|
|
{
|
|
|
|
|
// As soon as any analyzers are ready, say we're ok to be ticked
|
|
|
|
|
for (UAudioAnalyzer* Analyzer : AudioAnalyzers)
|
|
|
|
|
{
|
|
|
|
|
if (Analyzer->IsReadyForAnalysis())
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-03-06 01:58:21 -04:00
|
|
|
void UAudioAnalyzerSubsystem::Initialize(FSubsystemCollectionBase& Collection)
|
|
|
|
|
{
|
|
|
|
|
Super::Initialize(Collection);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UAudioAnalyzerSubsystem::Deinitialize()
|
|
|
|
|
{
|
|
|
|
|
// Release our audio analyzers
|
|
|
|
|
AudioAnalyzers.Reset();
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-09 18:31:09 -04:00
|
|
|
void UAudioAnalyzerSubsystem::RegisterAudioAnalyzer(UAudioAnalyzer* InAnalyzer)
|
|
|
|
|
{
|
|
|
|
|
AudioAnalyzers.AddUnique(InAnalyzer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UAudioAnalyzerSubsystem::UnregisterAudioAnalyzer(UAudioAnalyzer* InAnalyzer)
|
|
|
|
|
{
|
|
|
|
|
AudioAnalyzers.Remove(InAnalyzer);
|
|
|
|
|
}
|