Clear up MissionManager

Consolidate core class registrations
This commit is contained in:
Alexander Bock
2016-09-26 18:46:20 +02:00
parent 9892e0c37d
commit 26f4975b17
6 changed files with 47 additions and 51 deletions

View File

@@ -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__

View File

@@ -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 <openspace/mission/mission.h>
#include <ghoul/designpattern/singleton.h>
#include <ghoul/misc/exception.h>
#include <map>
@@ -39,16 +40,13 @@ namespace scripting { struct LuaLibrary; }
/**
* Singleton class keeping track of space missions.
*/
class MissionManager {
class MissionManager : public ghoul::Singleton<MissionManager> {
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<std::string, Mission>;
MissionMap _missionMap;
MissionMap::iterator _currentMission;
// Singleton
MissionManager();
};
} // namespace openspace
#endif // __MISSIONPHASEEQUENCER_H__
#endif // __MISSIONMANAGER_H__

View File

@@ -26,7 +26,13 @@
#include <openspace/documentation/documentationengine.h>
#include <openspace/engine/configurationmanager.h>
#include <openspace/engine/moduleengine.h>
#include <openspace/engine/openspaceengine.h>
#include <openspace/engine/wrapper/windowwrapper.h>
#include <openspace/interaction/interactionhandler.h>
#include <openspace/interaction/luaconsole.h>
#include <openspace/mission/mission.h>
#include <openspace/mission/missionmanager.h>
#include <openspace/rendering/renderable.h>
#include <openspace/rendering/screenspacerenderable.h>
#include <openspace/scene/translation.h>
@@ -34,11 +40,17 @@
#include <openspace/scene/scene.h>
#include <openspace/scene/scenegraphnode.h>
#include <openspace/scene/scale.h>
#include <openspace/scripting/scriptengine.h>
#include <openspace/scripting/scriptscheduler.h>
#include <openspace/util/spicemanager.h>
#include <openspace/util/time.h>
#include <openspace/util/timerange.h>
#ifdef OPENSPACE_MODULE_ONSCREENGUI_ENABLED
#include <modules/onscreengui/include/gui.h>
#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

View File

@@ -39,6 +39,7 @@
#include <openspace/interaction/keyboardcontroller.h>
#include <openspace/interaction/luaconsole.h>
#include <openspace/interaction/mousecontroller.h>
#include <openspace/mission/missionmanager.h>
#include <openspace/network/networkengine.h>
#include <openspace/properties/propertyowner.h>
#include <openspace/rendering/renderable.h>
@@ -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());

View File

@@ -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

View File

@@ -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<ghoul::io::TextureReaderCMAP>());
#ifdef OPENSPACE_MODULE_NEWHORIZONS_ENABLED
MissionManager::initialize();
#endif
return true;
}