From 26f4975b17759793c3952f56c356dce128c23322 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 26 Sep 2016 18:46:20 +0200 Subject: [PATCH] Clear up MissionManager Consolidate core class registrations --- .../documentation/core_registration.h | 6 ++-- include/openspace/mission/missionmanager.h | 24 ++++++-------- src/documentation/core_registration.cpp | 31 +++++++++++++++++-- src/engine/openspaceengine.cpp | 16 ++-------- src/mission/missionmanager.cpp | 16 ++-------- src/rendering/renderengine.cpp | 5 --- 6 files changed, 47 insertions(+), 51 deletions(-) diff --git a/include/openspace/documentation/core_registration.h b/include/openspace/documentation/core_registration.h index d29259daf2..61a462eddf 100644 --- a/include/openspace/documentation/core_registration.h +++ b/include/openspace/documentation/core_registration.h @@ -26,13 +26,13 @@ #define __CORE_REGISTRATION_H__ namespace openspace { -namespace documentation { -class DocumentationEngine; +namespace documentation { class DocumentationEngine; } +namespace scripting { class ScriptEngine; } void registerCoreClasses(documentation::DocumentationEngine& engine); +void registerCoreClasses(scripting::ScriptEngine& engine); -} // namespace documentation } // namespace openspace #endif // __CORE_REGISTRATION_H__ diff --git a/include/openspace/mission/missionmanager.h b/include/openspace/mission/missionmanager.h index bc7b6b7f70..a25d3df657 100644 --- a/include/openspace/mission/missionmanager.h +++ b/include/openspace/mission/missionmanager.h @@ -22,11 +22,12 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __MISSIONPHASEEQUENCER_H__ -#define __MISSIONPHASEEQUENCER_H__ +#ifndef __MISSIONMANAGER_H__ +#define __MISSIONMANAGER_H__ #include +#include #include #include @@ -39,16 +40,13 @@ namespace scripting { struct LuaLibrary; } /** * Singleton class keeping track of space missions. */ -class MissionManager { +class MissionManager : public ghoul::Singleton { public: struct MissionManagerException : public ghoul::RuntimeError { explicit MissionManagerException(std::string error); }; - static MissionManager& ref(); - - static void initialize(); - static void deinitialize(); + MissionManager(); /** * Reads a mission from file and maps the mission name to the Mission object. If @@ -86,20 +84,16 @@ public: * loaded, a warning will be printed and a dummy mission will be returned. */ const Mission& currentMission(); - -private: - static scripting::LuaLibrary luaLibrary(); - static MissionManager _instance; + static scripting::LuaLibrary luaLibrary(); + +private: using MissionMap = std::map; MissionMap _missionMap; MissionMap::iterator _currentMission; - - // Singleton - MissionManager(); }; } // namespace openspace -#endif // __MISSIONPHASEEQUENCER_H__ +#endif // __MISSIONMANAGER_H__ diff --git a/src/documentation/core_registration.cpp b/src/documentation/core_registration.cpp index 00bfb491df..7f17a59259 100644 --- a/src/documentation/core_registration.cpp +++ b/src/documentation/core_registration.cpp @@ -26,7 +26,13 @@ #include #include +#include +#include +#include +#include +#include #include +#include #include #include #include @@ -34,11 +40,17 @@ #include #include #include +#include +#include +#include +#include #include +#ifdef OPENSPACE_MODULE_ONSCREENGUI_ENABLED +#include +#endif namespace openspace { -namespace documentation { void registerCoreClasses(documentation::DocumentationEngine& engine) { engine.addDocumentation(ConfigurationManager::Documentation()); @@ -53,5 +65,20 @@ void registerCoreClasses(documentation::DocumentationEngine& engine) { engine.addDocumentation(TimeRange::Documentation()); } -} // namespace documentation +void registerCoreClasses(scripting::ScriptEngine& engine) { + engine.addLibrary(OpenSpaceEngine::luaLibrary()); + engine.addLibrary(SpiceManager::luaLibrary()); + engine.addLibrary(RenderEngine::luaLibrary()); + engine.addLibrary(Scene::luaLibrary()); + engine.addLibrary(Time::luaLibrary()); + engine.addLibrary(interaction::InteractionHandler::luaLibrary()); + engine.addLibrary(LuaConsole::luaLibrary()); + engine.addLibrary(gui::GUI::luaLibrary()); + engine.addLibrary(network::ParallelConnection::luaLibrary()); + engine.addLibrary(ModuleEngine::luaLibrary()); + engine.addLibrary(scripting::ScriptScheduler::luaLibrary()); + engine.addLibrary(WindowWrapper::luaLibrary()); + engine.addLibrary(MissionManager::luaLibrary()); +} + } // namespace openspace diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index f98bb193e2..89b8cf9ebf 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -312,7 +313,7 @@ bool OpenSpaceEngine::create(int argc, char** argv, // Register modules _engine->_moduleEngine->initialize(); - documentation::registerCoreClasses(DocEng); + registerCoreClasses(DocEng); // After registering the modules, the documentations for the available classes // can be added as well for (OpenSpaceModule* m : _engine->_moduleEngine->modules()) { @@ -407,18 +408,7 @@ bool OpenSpaceEngine::initialize() { // Register Lua script functions LDEBUG("Registering Lua libraries"); - _scriptEngine->addLibrary(OpenSpaceEngine::luaLibrary()); - _scriptEngine->addLibrary(SpiceManager::luaLibrary()); - _scriptEngine->addLibrary(RenderEngine::luaLibrary()); - _scriptEngine->addLibrary(Scene::luaLibrary()); - _scriptEngine->addLibrary(Time::luaLibrary()); - _scriptEngine->addLibrary(interaction::InteractionHandler::luaLibrary()); - _scriptEngine->addLibrary(LuaConsole::luaLibrary()); - _scriptEngine->addLibrary(gui::GUI::luaLibrary()); - _scriptEngine->addLibrary(network::ParallelConnection::luaLibrary()); - _scriptEngine->addLibrary(ModuleEngine::luaLibrary()); - _scriptEngine->addLibrary(ScriptScheduler::luaLibrary()); - _scriptEngine->addLibrary(WindowWrapper::luaLibrary()); + registerCoreClasses(*_scriptEngine); #ifdef OPENSPACE_MODULE_ISWA_ENABLED _scriptEngine->addLibrary(IswaManager::luaLibrary()); diff --git a/src/mission/missionmanager.cpp b/src/mission/missionmanager.cpp index 0048ce9181..56cb58be64 100644 --- a/src/mission/missionmanager.cpp +++ b/src/mission/missionmanager.cpp @@ -38,17 +38,10 @@ MissionManager::MissionManagerException::MissionManagerException(std::string err : ghoul::RuntimeError(std::move(error), "MissionManager") {} -MissionManager MissionManager::_instance; -MissionManager& MissionManager::ref() { - return _instance; -} - -void MissionManager::initialize() { - OsEng.scriptEngine().addLibrary(MissionManager::luaLibrary()); -} - -void MissionManager::deinitialize() {} +MissionManager::MissionManager() + : _currentMission(_missionMap.end()) +{} void MissionManager::setCurrentMission(const std::string& missionName) { ghoul_assert(!missionName.empty(), "missionName must not be empty"); @@ -118,8 +111,5 @@ scripting::LuaLibrary MissionManager::luaLibrary() { // Singleton -MissionManager::MissionManager() - : _currentMission(_missionMap.end()) -{} } // namespace openspace diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index add92b729d..4e979f295d 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -151,9 +151,7 @@ bool RenderEngine::deinitialize() { screenspacerenderable->deinitialize(); } -#ifdef OPENSPACE_MODULE_NEWHORIZONS_ENABLED MissionManager::deinitialize(); -#endif _sceneGraph->clearSceneGraph(); return true; @@ -224,10 +222,7 @@ bool RenderEngine::initialize() { ghoul::io::TextureReader::ref().addReader(std::make_shared()); -#ifdef OPENSPACE_MODULE_NEWHORIZONS_ENABLED MissionManager::initialize(); -#endif - return true; }