Init
This commit is contained in:
53
Source/Arona/Singleton/SingletonManager.cpp
Normal file
53
Source/Arona/Singleton/SingletonManager.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
#include "SingletonManager.h"
|
||||
|
||||
#include "Misc/AronaConfig.h"
|
||||
#include "Singleton/CallRateLimiterManager.h"
|
||||
#include "Singleton/MidiSequencer.h"
|
||||
#include "Singleton/MixerList.h"
|
||||
#include "Singleton/PluginHostList.h"
|
||||
#include "Singleton/PortAudioAPI.h"
|
||||
#include "UI/Widget/WindowManager.h"
|
||||
|
||||
#define REGISTER_MANAGER(ManagerClass) RegisterManager(&ManagerClass::Get());
|
||||
|
||||
void FSingletonManager::Init()
|
||||
{
|
||||
REGISTER_MANAGER(FCallRateLimiterManager)
|
||||
REGISTER_MANAGER(FAronaConfig)
|
||||
REGISTER_MANAGER(FMixerList)
|
||||
REGISTER_MANAGER(FPortAudioAPI)
|
||||
REGISTER_MANAGER(FPluginHostList)
|
||||
REGISTER_MANAGER(FMidiSequencer)
|
||||
REGISTER_MANAGER(FWindowManager)
|
||||
|
||||
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()
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user