Files
UwU-Engine/ModuleLib/ModuleInstance.cpp
T

69 lines
1.2 KiB
C++

#include "ModuleInstance.h"
#include <mutex>
#include <thread>
ModuleInstance::ModuleInstance(CoreInstance& core) : core_(core)
{
// Init instance
}
void ModuleInstance::start()
{
// Create thread
}
void ModuleInstance::stop()
{
onStop.Call();
}
extern ModuleInstance* Factory(CoreInstance&);
static std::mutex mModuleInstance;
static ModuleInstance* module = nullptr;
static std::thread* moduleThread;
void InitModule(CoreInstance& core)
{
mModuleInstance.lock();
if(module == nullptr)
module = Factory(core);
mModuleInstance.unlock();
}
void StartModule()
{
mModuleInstance.lock();
if (module != nullptr)
moduleThread = new std::thread([&] {module->start(); });
mModuleInstance.unlock();
}
void StopModule()
{
mModuleInstance.lock();
if(module != nullptr)
{
delete module;
module = nullptr;
moduleThread->detach();
delete moduleThread;
}
mModuleInstance.unlock();
}
void QuitModule()
{
mModuleInstance.lock();
if(module != nullptr)
{
module->stop();
moduleThread->join();
delete module;
module = nullptr;
}
mModuleInstance.unlock();
}