diff --git a/include/openspace/engine/settingsengine.h b/include/openspace/engine/settingsengine.h index ce79ac0996..f1faa111e7 100644 --- a/include/openspace/engine/settingsengine.h +++ b/include/openspace/engine/settingsengine.h @@ -29,13 +29,19 @@ #include #include +#include + namespace openspace { + +class OpenSpaceModule; class SettingsEngine : public properties::PropertyOwner { public: SettingsEngine(); void initialize(); + + void setModules(std::vector modules); private: void initEyeSeparation(); diff --git a/include/openspace/util/openspacemodule.h b/include/openspace/util/openspacemodule.h index c8c75fc664..350c853f65 100644 --- a/include/openspace/util/openspacemodule.h +++ b/include/openspace/util/openspacemodule.h @@ -25,7 +25,10 @@ #ifndef __OPENSPACEMODULE_H__ #define __OPENSPACEMODULE_H__ +#include + #include +#include namespace openspace { @@ -34,7 +37,7 @@ namespace openspace { * into a useful granularity to be mostly used self-sufficiently. Each OpenSpaceModule * needs a unique, nonempty name. */ -class OpenSpaceModule { +class OpenSpaceModule : public properties::PropertyOwner { public: /** * Constructs the OpenSpaceModule with a specific \p name. The uniqueness of the @@ -61,12 +64,6 @@ public: */ void deinitialize(); - /** - * Returns the name for this OpenSpaceModule. - * \return THe name for this OpenSpaceModule - */ - std::string name() const; - protected: /** * Customization point for each derived class. The internalInitialize method is called @@ -85,9 +82,6 @@ protected: * path tokens. */ std::string modulePath() const; - - /// The name of this OpenSpaceModule - const std::string _name; }; } // namespace openspace diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 4b0c472145..8fb26fb6f5 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -421,6 +421,7 @@ bool OpenSpaceEngine::initialize() { // Initialize the SettingsEngine _settingsEngine->initialize(); + _settingsEngine->setModules(_moduleEngine->modules()); // Initialize the Scene Scene* sceneGraph = new Scene; diff --git a/src/engine/settingsengine.cpp b/src/engine/settingsengine.cpp index c4dbe49758..56549da586 100644 --- a/src/engine/settingsengine.cpp +++ b/src/engine/settingsengine.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -45,7 +46,12 @@ void SettingsEngine::initialize() { initEyeSeparation(); initSceneFiles(); } - + +void SettingsEngine::setModules(std::vector modules) { + for (OpenSpaceModule* m : modules) { + addPropertySubOwner(m); + } +} void SettingsEngine::initEyeSeparation() { addProperty(_eyeSeparation); diff --git a/src/util/openspacemodule.cpp b/src/util/openspacemodule.cpp index 44103addd0..3c71ffaf67 100644 --- a/src/util/openspacemodule.cpp +++ b/src/util/openspacemodule.cpp @@ -36,10 +36,10 @@ namespace { namespace openspace { -OpenSpaceModule::OpenSpaceModule(std::string name) - : _name(std::move(name)) -{ - ghoul_assert(!_name.empty(), "Name must not be empty"); +OpenSpaceModule::OpenSpaceModule(std::string name) { + ghoul_assert(!name.empty(), "Name must not be empty"); + + setName(name); } void OpenSpaceModule::initialize() { @@ -63,10 +63,6 @@ void OpenSpaceModule::deinitialize() { internalDeinitialize(); } -std::string OpenSpaceModule::name() const { - return _name; -} - std::string OpenSpaceModule::modulePath() const { std::string moduleName = name(); std::transform(moduleName.begin(), moduleName.end(), moduleName.begin(), tolower);