#include "ModuleInstance.h" #include #include #include "Core/CoreCallBacks.h" extern ModuleInstance* Factory(); static std::mutex mModuleInstance; static ModuleInstance* module = nullptr; static std::thread* moduleThread; // Don't free. It's memory free in core static CoreCallBacks* callbacks_; void ModuleInstance::start() { } void ModuleInstance::stop() { onStop.Call(); } void ModuleInstance::QuitGame() { callbacks_->Quit(); } void InitModule(CoreCallBacks* callbacks) { std::lock_guard lock(mModuleInstance); callbacks_ = callbacks; if(module == nullptr) module = Factory(); } void StartModule() { std::lock_guard lock(mModuleInstance); if (module != nullptr) moduleThread = new std::thread(&ModuleInstance::start, module); } void QuitModule() { std::lock_guard lock(mModuleInstance); if(module != nullptr) { module->stop(); moduleThread->join(); delete module; module = nullptr; delete moduleThread; moduleThread = nullptr; } }