58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
#include "SingletonManager.h"
|
|
|
|
#include "Misc/AronaConfig.h"
|
|
#include "PeakFile/PeakFileManager.h"
|
|
#include "Singleton/CallRateLimiterManager.h"
|
|
#include "Singleton/MidiSequencer.h"
|
|
#include "Singleton/MixerList.h"
|
|
#include "Singleton/PluginHostList.h"
|
|
#include "Singleton/PortAudioAPI.h"
|
|
#include "Singleton/SampleManager.h"
|
|
#include "UI/Widget/WindowManager.h"
|
|
|
|
#define REGISTER_MANAGER(ManagerClass) RegisterManager(&ManagerClass::Get());
|
|
|
|
void FSingletonManager::Init()
|
|
{
|
|
REGISTER_MANAGER(FCallRateLimiterManager)
|
|
REGISTER_MANAGER(FAronaConfig)
|
|
REGISTER_MANAGER(FSampleManager)
|
|
REGISTER_MANAGER(FMixerList)
|
|
REGISTER_MANAGER(FPortAudioAPI)
|
|
REGISTER_MANAGER(FPluginHostList)
|
|
REGISTER_MANAGER(FMidiSequencer)
|
|
REGISTER_MANAGER(FWindowManager)
|
|
REGISTER_MANAGER(FPeakFileManager)
|
|
|
|
for (ISingleton* Manager : Managers)
|
|
{
|
|
Manager->PostInit();
|
|
}
|
|
}
|
|
|
|
void FSingletonManager::Release()
|
|
{
|
|
for (int32 i = Managers.Num() - 1; i >= 0; --i)
|
|
{
|
|
ISingleton* SingletonImpl = Managers[i];
|
|
SingletonImpl->BeginRelease();
|
|
}
|
|
for (int32 i = Managers.Num() - 1; i >= 0; --i)
|
|
{
|
|
ISingleton* SingletonImpl = Managers[i];
|
|
SingletonImpl->Release();
|
|
}
|
|
Managers.Reset();
|
|
}
|
|
|
|
void FSingletonManager::RegisterManager(ISingleton* Manager)
|
|
{
|
|
Manager->Init();
|
|
Managers.Add(Manager);
|
|
UE_LOG(SingletonLog, Log, TEXT("%s Registered"), *Manager->GetName().ToString());
|
|
}
|
|
|
|
FSingletonManager::FSingletonManager()
|
|
{
|
|
}
|