diff --git a/src/kiwano/platform/Application.cpp b/src/kiwano/platform/Application.cpp index 14a92f09..fe666dbc 100644 --- a/src/kiwano/platform/Application.cpp +++ b/src/kiwano/platform/Application.cpp @@ -43,7 +43,7 @@ Application::~Application() { } -void Application::Run(const Settings& settings, const Function& setup) +void Application::Run(const Settings& settings, const Function& setup, std::initializer_list modules) { KGE_ASSERT(setup); class CallbackRunner : public Runner @@ -65,6 +65,11 @@ void Application::Run(const Settings& settings, const Function& setup) RunnerPtr runner = new CallbackRunner(setup); runner->SetName("__KGE_CALLBACK_RUNNER__"); runner->SetSettings(settings); + + for (auto m : modules) + { + Use(*m); + } Run(runner); } @@ -156,16 +161,16 @@ void Application::Destroy() Renderer::GetInstance().Destroy(); } -void Application::Use(Module& module) +void Application::Use(Module& m) { #if defined(KGE_DEBUG) - if (std::find(modules_.begin(), modules_.end(), &module) != modules_.end()) + if (std::find(modules_.begin(), modules_.end(), &m) != modules_.end()) { KGE_ASSERT(false && "Module already exists!"); } #endif - modules_.push_back(&module); + modules_.push_back(&m); } void Application::SetTimeScale(float scale_factor) diff --git a/src/kiwano/platform/Application.h b/src/kiwano/platform/Application.h index ae961548..40d969cf 100644 --- a/src/kiwano/platform/Application.h +++ b/src/kiwano/platform/Application.h @@ -59,7 +59,7 @@ public: * @param setup 启动函数 * @note 该函数是阻塞的,应用程序结束时函数返回 */ - void Run(const Settings& settings, const Function& setup); + void Run(const Settings& settings, const Function& setup, std::initializer_list modules = {}); /** * \~chinese @@ -96,9 +96,9 @@ public: /** * \~chinese * @brief 添加模块 - * @param[in] module 模块 + * @param[in] m 模块 */ - void Use(Module& module); + void Use(Module& m); /** * \~chinese