Merge remote-tracking branch 'origin/master' into feature/properties-visibility

This commit is contained in:
Ylva Selling
2022-06-29 08:52:22 -04:00
231 changed files with 1287 additions and 609 deletions

View File

@@ -27,6 +27,7 @@
#include <openspace/properties/propertyowner.h>
#include <openspace/properties/list/stringlistproperty.h>
#include <map>
#include <memory>
#include <vector>
@@ -123,7 +124,10 @@ public:
static scripting::LuaLibrary luaLibrary();
private:
/// The list of all registered OpenSpaceModule%s
/// The list of all names of all registered OpenSpaceModules
properties::StringListProperty _allModules;
/// The list of all registered OpenSpaceModules
std::vector<std::unique_ptr<OpenSpaceModule>> _modules;
};

View File

@@ -35,6 +35,7 @@ namespace openspace {
class Camera;
class Layer;
class Profile;
class Renderable;
class SceneGraphNode;
class ScreenSpaceRenderable;
class Time;
@@ -74,6 +75,8 @@ struct Event {
LayerRemoved,
SessionRecordingPlayback,
PointSpacecraft,
RenderableEnabled,
RenderableDisabled,
Custom
};
constexpr explicit Event(Type type_) : type(type_) {}
@@ -108,12 +111,17 @@ void logAllEvents(const Event* e);
* This event is created whenever a new scene graph node is added to the system. By the
* time this event is signalled, the scene graph node has already been created and added
* to the scene.
*
* \param Node The identifier of the node that was added
*/
struct EventSceneGraphNodeAdded : public Event {
static const Type Type = Event::Type::SceneGraphNodeAdded;
/**
* Creates an instance of an EventSceneGraphNodeAdded event.
*
* \param Node The identifier of the node that was added
*
* \pre node_ must not be nullptr
*/
explicit EventSceneGraphNodeAdded(const SceneGraphNode* node_);
const tstring node;
};
@@ -121,12 +129,17 @@ struct EventSceneGraphNodeAdded : public Event {
/**
* This event is created whenever a scene graph node was removed. By the time this event
* is signalled, the scene graph node has already been removed.
*
* \param Node The identifier of that node that was removed
*/
struct EventSceneGraphNodeRemoved : public Event {
static const Type Type = Event::Type::SceneGraphNodeRemoved;
/**
* Creates an instance of an EventSceneGraphNodeRemoved event.
*
* \param Node The identifier of the node that was removed
*
* \pre node_ must not be nullptr
*/
explicit EventSceneGraphNodeRemoved(const SceneGraphNode* node_);
const tstring node;
};
@@ -134,9 +147,6 @@ struct EventSceneGraphNodeRemoved : public Event {
/**
* This event is created whenever something in the parallel connection subsystem changes.
* The new state is sent as an argument with this event.
*
* \param State The new state of the parallel connection system; is one of `Established`,
* `Lost`, `HostshipGained`, or `HostshipLost`
*/
struct EventParallelConnection : public Event {
static const Type Type = Event::Type::ParallelConnection;
@@ -147,6 +157,13 @@ struct EventParallelConnection : public Event {
HostshipGained,
HostshipLost
};
/**
* Creates an instance of an EventParallelConnection event.
*
* \param State The new state of the parallel connection system; is one of
* `Established`, `Lost`, `HostshipGained`, or `HostshipLost`
*/
explicit EventParallelConnection(State state_);
State state;
};
@@ -158,6 +175,9 @@ struct EventParallelConnection : public Event {
struct EventProfileLoadingFinished : public Event {
static const Type Type = Event::Type::ProfileLoadingFinished;
/**
* Creates an instance of an EventProfileLoadingFinished event.
*/
EventProfileLoadingFinished();
};
@@ -165,9 +185,6 @@ struct EventProfileLoadingFinished : public Event {
* This event is created whenever some information about the application shutdown sequence
* changes. This can either be that the seqeuence started, was aborted, or is finished,
* which means that OpenSpace is just about the shutdown.
*
* \param State The next state of the application shutdown sequence; is one of `Started`,
* `Aborted`, or `Finished`
*/
struct EventApplicationShutdown : public Event {
static const Type Type = Event::Type::ApplicationShutdown;
@@ -178,6 +195,12 @@ struct EventApplicationShutdown : public Event {
Finished
};
/**
* Creates an instance of an EventApplicationShutdown event.
*
* \param State The next state of the application shutdown sequence; is one of
* `Started`, `Aborted`, or `Finished`
*/
explicit EventApplicationShutdown(State state_);
const State state;
};
@@ -185,13 +208,17 @@ struct EventApplicationShutdown : public Event {
/**
* This event is created when a new screenspace renderable has been created. By the time
* this event is craeted, the screenspace renderable is already registered and available.
*
* \param Renderable The identifier of the new screenspace renderable that was just added
* to the system
*/
struct EventScreenSpaceRenderableAdded : public Event {
static const Type Type = Event::Type::ScreenSpaceRenderableAdded;
/**
* Creates an instance of an EventScreenSpaceRenderableAdded event.
*
* \param renderable_ The the new screenspace renderable that was added to the system
*
* \pre renderable_ must not be nullptr
*/
explicit EventScreenSpaceRenderableAdded(const ScreenSpaceRenderable* renderable_);
const tstring renderable;
};
@@ -200,12 +227,15 @@ struct EventScreenSpaceRenderableAdded : public Event {
* This event is created when a screenspace renderable has been removed from the system.
* When this event is created, the screenspace renderable has already been removed and is
* no longer available
*
* \param Renderable The identifier of the screenspace renderable that was removed
*/
struct EventScreenSpaceRenderableRemoved : public Event {
static const Type Type = Event::Type::ScreenSpaceRenderableRemoved;
/**
* Creates an instance of an EventScreenSpaceRenderableRemoved event.
*
* \param renderable_ The the new screenspace renderable that was removed
*/
explicit EventScreenSpaceRenderableRemoved(const ScreenSpaceRenderable* renderable_);
const tstring renderable;
};
@@ -227,11 +257,6 @@ interaction sphere radius are all taken from the current focus node.
^ ^ ^ ^
Exiting Receding Reaching Approaching
```
*
* \param Node The name of the node the camera is transitioning relative to. Currently is
* always the same as the camera's focus node
* \param Transition The transition type that the camera just finished; is one of
* `Approaching`, `Reaching`, `Receding`, or `Exiting`
*/
struct EventCameraFocusTransition : public Event {
static const Type Type = Event::Type::CameraFocusTransition;
@@ -243,6 +268,18 @@ struct EventCameraFocusTransition : public Event {
Exiting
};
/**
* Creates an instance of an EventCameraFocusTransition event.
*
* \param camera_ The camera object that caused the transition
* \param node_ The name of the node the camera is transitioning relative to.
* Currently is always the same as the camera's focus node
* \param transition_ The transition type that the camera just finished; is one of
* `Approaching`, `Reaching`, `Receding`, or `Exiting`
*
* \pre camera_ must not be nullptr
* \pre node_ must not be nullptr
*/
EventCameraFocusTransition(const Camera* camera_, const SceneGraphNode* node_,
Transition transition_);
@@ -259,7 +296,14 @@ struct EventCameraFocusTransition : public Event {
struct EventTimeOfInterestReached : public Event {
static const Type Type = Event::Type::TimeOfInterestReached;
/**
* Creates an instance of an EventTimeOfInterestReached event.
*
* \param time_ The time of interest that has been reached
* \param camera_ Information about the camera for the specific transition
*/
EventTimeOfInterestReached(const Time* time_, const Camera* camera_);
const Time* time = nullptr;
const Camera* camera = nullptr;
};
@@ -279,16 +323,21 @@ struct EventMissionEventReached : public Event {
/**
* This event is created when a planet is eclipsed by a moon or a different planet. This
* event is currently unused.
*
* \param Eclipsee The identifier of the scene graph node that is eclipsed by another
* object
* \param Eclipser The identifier of the scene graph node that is eclipsing the other
* object
*/
struct EventPlanetEclipsed : public Event {
static const Type Type = Event::Type::PlanetEclipsed;
/**
* Creates an instance of an EventPlanetEclipsed event.
*
* \param eclipsee_ The scene graph node that is eclipsed by another object
* \param eclipser_ The scene graph node that is eclipsing the other object
*
* \pre eclipsee_ must not be nullptr
* \pre eclipser_ must not be nullptr
*/
EventPlanetEclipsed(const SceneGraphNode* eclipsee_, const SceneGraphNode* eclipser_);
const tstring eclipsee;
const tstring eclipser;
};
@@ -296,12 +345,17 @@ struct EventPlanetEclipsed : public Event {
/**
* This event is created when the interpolation of a property value is finished. If the
* interpolation time of a property change is 0s, this event is not fired
*
* \param Property The URI of the property whose interpolation has finished
*/
struct EventInterpolationFinished : public Event {
static const Type Type = Event::Type::InterpolationFinished;
/**
* Creates an instance of an EventInterpolationFinished event.
*
* \param Property The property whose interpolation has finished
*
* \pre property_ must not be nullptr
*/
EventInterpolationFinished(const properties::Property* property_);
const tstring property;
};
@@ -310,30 +364,45 @@ struct EventInterpolationFinished : public Event {
* This event is created when the camera changes focus nodes. Even if the camera position
* is interpolated, the node change happens instantaneously and the event is fired at the
* same time.
*
* \param OldNode The identifier of the scene graph node which was the old focus node
* \param NewNode The identifier of the scene graph node that is the new focus node
*/
struct EventFocusNodeChanged : public Event {
static const Type Type = Event::Type::FocusNodeChanged;
/**
* Creates an instance of an EventFocusNodeChanged event.
*
* \param oldNode_ The scene graph node which was the old focus node
* \param newNode_ The scene graph node that is the new focus node
*
* \pre oldNode_ must not be nullptr
* \pre newNode_ must not be nullptr
*/
EventFocusNodeChanged(const SceneGraphNode* oldNode_, const SceneGraphNode* newNode_);
const tstring oldNode;
const tstring newNode;
};
/**
* This event is created when a layer is added to to a globe.
*
* \param Globe The identifier of the globe to which the layer is added
* \param Group The identifier of the layer group to which the layer is added
* \param Layer The identifier of the layer that was added
*/
struct EventLayerAdded : public Event {
static const Type Type = Event::Type::LayerAdded;
/**
* Creates an instance of an EventLayerAdded event.
*
* \param node_ The identifier of the globe to which the layer is added
* \param layerGroup_ The identifier of the layer group to which the layer is added
* \param layer_ The identifier of the layer that was added
*
* \pre node_ must not be empty
* \pre layerGroup_ must not be empty
* \pre layer_ must not be empty
*/
explicit EventLayerAdded(std::string_view node_, std::string_view layerGroup_,
std::string_view layer_);
const tstring node;
const tstring layerGroup;
const tstring layer;
@@ -341,16 +410,24 @@ struct EventLayerAdded : public Event {
/**
* This event is created when a layer is removed from a globe.
*
* \param Globe The identifier of the globe from which the layer is removed
* \param Group The identifier of the layer group from which the layer is removed
* \param Layer The identifier of the layer that was removed
*/
struct EventLayerRemoved : public Event {
static const Type Type = Event::Type::LayerRemoved;
/**
* Creates an instance of an EventLayerRemoved event.
*
* \param node_ The identifier of the globe to which the layer is removed
* \param layerGroup_ The identifier of the layer group to which the layer is removed
* \param layer_ The identifier of the layer that was removed
*
* \pre node_ must not be empty
* \pre layerGroup_ must not be empty
* \pre layer_ must not be empty
*/
explicit EventLayerRemoved(std::string_view node_, std::string_view layerGroup_,
std::string_view layer_);
const tstring node;
const tstring layerGroup;
const tstring layer;
@@ -359,9 +436,6 @@ struct EventLayerRemoved : public Event {
/**
* This event is created when something regarding a session recording playback changes.
* The event contains information about the new state of the session recording subsystem.
*
* \param State The new state of the session recording; one of `Started`, `Paused`,
* `Resumed`, `Finished`
*/
struct EventSessionRecordingPlayback : public Event {
static const Type Type = Event::Type::SessionRecordingPlayback;
@@ -373,7 +447,14 @@ struct EventSessionRecordingPlayback : public Event {
Finished
};
/**
* Creates an instance of an EventSessionRecordingPlayback event.
*
* \param state_ The new state of the session recording; one of `Started`, `Paused`,
* `Resumed`, `Finished`
*/
EventSessionRecordingPlayback(State state_);
const State state;
};
@@ -382,21 +463,63 @@ struct EventSessionRecordingPlayback : public Event {
* coordinate in the sky is issued. The event contains information about the sky
* coordinate to point the spacecraft towards, and an optional argument for the duration
* it should do the pointing.
*
* \param Ra The Ra part of the sky coordinate in decimal degrees to point towards
* \param Dec The Dec part of the sky coordinate in decimal degrees to point towards
* \param Duration The duration of time in seconds that the spacecraft should redirect
* itself to the coordinate. Default is 3 seconds
*/
struct EventPointSpacecraft : public Event {
static const Type Type = Event::Type::PointSpacecraft;
/**
* Creates an instance of an EventSessionRecordingPlayback event.
*
* \param ra_ The Ra part of the sky coordinate in decimal degrees to point towards
* \param dec_ The Dec part of the sky coordinate in decimal degrees to point towards
* \param duration_ The duration of time in seconds that the spacecraft should
* redirect itself to the coordinate. Default is 3 seconds
*/
EventPointSpacecraft(double ra_, double dec_, double duration_ = 3.0);
const double ra;
const double dec;
const double duration;
};
/**
* This event is created whenever a renderable is enabled. By the time this event is
* signalled, the renderable has already been enabled.
*/
struct EventRenderableEnabled : public Event {
static const Type Type = Event::Type::RenderableEnabled;
/**
* Creates an instance of an EventRenderableEnabled event.
*
* \param node_ The identifier of the node that contains the renderable
*
* \pre node_ must not be nullptr
*/
explicit EventRenderableEnabled(const SceneGraphNode* node_);
const tstring node;
};
/**
* This event is created whenever a renderable is disabled. By the time this event is
* signalled, the renderable has already been disabled.
*/
struct EventRenderableDisabled : public Event {
static const Type Type = Event::Type::RenderableDisabled;
/**
* Creates an instance of an EventRenderableDisabled event.
*
* \param node_ The identifier of that node that contains the renderable
*
* \pre node_ must not be nullptr
*/
explicit EventRenderableDisabled(const SceneGraphNode* node_);
const tstring node;
};
/**
* A custom event type that can be used in a pinch when no explicit event type is
* available. This should only be used in special circumstances and it should be
@@ -405,6 +528,14 @@ struct EventPointSpacecraft : public Event {
struct CustomEvent : public Event {
static const Type Type = Event::Type::Custom;
/**
* Creates an instance of a CustomEvent event.
*
* \param subtype_ A textual description of the custom subtype that is emitted
* \param payload_ The payload in a string form
*
* \pre subtype_ must not be empty
*/
CustomEvent(std::string_view subtype_, std::string_view payload_);
const tstring subtype;

View File

@@ -101,7 +101,7 @@ public:
SessionRecording();
SessionRecording(bool isGlobal);
~SessionRecording();
~SessionRecording() override;
/**
* Used to de-initialize the session recording feature. Any recording or playback
@@ -604,7 +604,7 @@ protected:
Timestamps t3stamps;
};
double _timestampRecordStarted = 0.0;
Timestamps _timestamps3RecordStarted;
Timestamps _timestamps3RecordStarted{ 0.0, 0.0, 0.0 };
double _timestampPlaybackStarted_application = 0.0;
double _timestampPlaybackStarted_simulation = 0.0;
double _timestampApplicationStarted_simulation = 0.0;
@@ -696,10 +696,12 @@ protected:
std::string& version, DataMode& mode);
void populateListofLoadedSceneGraphNodes();
bool checkIfScriptUsesScenegraphNode(std::string s);
void checkForScenegraphNodeAccess_Scene(std::string& s, std::string& result);
void checkForScenegraphNodeAccess_Nav(std::string& s, std::string& result);
void checkIfScriptUsesScenegraphNode(std::string s);
bool checkForScenegraphNodeAccessScene(std::string& s);
bool checkForScenegraphNodeAccessNav(std::string& navTerm);
std::string extractScenegraphNodeFromScene(std::string& s);
bool checkIfInitialFocusNodeIsLoaded(unsigned int firstCamIndex);
std::string isolateTermFromQuotes(std::string s);
void eraseSpacesFromString(std::string& s);
std::string getNameFromSurroundingQuotes(std::string& s);
@@ -733,11 +735,11 @@ protected:
bool _saveRenderingDuringPlayback = false;
double _saveRenderingDeltaTime = 1.0 / 30.0;
double _saveRenderingCurrentRecordedTime;
double _saveRenderingCurrentRecordedTime = 0.0;
std::chrono::steady_clock::duration _saveRenderingDeltaTime_interpolation_usec;
std::chrono::steady_clock::time_point _saveRenderingCurrentRecordedTime_interpolation;
double _saveRenderingCurrentApplicationTime_interpolation;
long long _saveRenderingClockInterpolation_countsPerSec;
double _saveRenderingCurrentApplicationTime_interpolation = 0.0;
long long _saveRenderingClockInterpolation_countsPerSec = 1;
bool _saveRendering_isFirstFrame = true;
unsigned char _keyframeBuffer[_saveBufferMaxSize_bytes];
@@ -835,7 +837,7 @@ protected:
class SessionRecording_legacy_0085 : public SessionRecording {
public:
SessionRecording_legacy_0085() : SessionRecording() {}
~SessionRecording_legacy_0085() {}
~SessionRecording_legacy_0085() override {}
char FileHeaderVersion[FileHeaderVersionLength+1] = "00.85";
char TargetConvertVersion[FileHeaderVersionLength+1] = "01.00";
std::string fileFormatVersion() override {

View File

@@ -37,7 +37,7 @@ namespace openspace::interaction {
class ConvertRecFileVersionTask : public Task {
public:
ConvertRecFileVersionTask(const ghoul::Dictionary& dictionary);
~ConvertRecFileVersionTask();
~ConvertRecFileVersionTask() override;
std::string description() override;
void perform(const Task::ProgressCallback& progressCallback) override;
static documentation::Documentation documentation();

View File

@@ -41,7 +41,7 @@ public:
ToBinary
};
ConvertRecFormatTask(const ghoul::Dictionary& dictionary);
~ConvertRecFormatTask();
~ConvertRecFormatTask() override;
std::string description() override;
void perform(const Task::ProgressCallback& progressCallback) override;
static documentation::Documentation documentation();

View File

@@ -61,7 +61,7 @@ class PathNavigator;
class NavigationHandler : public properties::PropertyOwner {
public:
NavigationHandler();
~NavigationHandler();
virtual ~NavigationHandler() override;
void initialize();
void deinitialize();

View File

@@ -51,7 +51,7 @@ class Path;
class PathNavigator : public properties::PropertyOwner {
public:
PathNavigator();
~PathNavigator();
virtual ~PathNavigator() override;
// Accessors
Camera* camera() const;

View File

@@ -47,7 +47,7 @@ namespace scripting { struct LuaLibrary; }
class ParallelPeer : public properties::PropertyOwner {
public:
ParallelPeer();
~ParallelPeer();
~ParallelPeer() override;
void connect();
void setPort(std::string port);

View File

@@ -35,7 +35,7 @@ class ListProperty : public TemplateProperty<std::vector<T>> {
public:
ListProperty(Property::PropertyInfo info, std::vector<T> values);
virtual ~ListProperty() = 0;
virtual ~ListProperty() override = 0;
};
} // namespace openspace::properties

View File

@@ -77,7 +77,7 @@ public:
* The destructor will remove all Propertys and PropertyOwners it owns along with
* itself.
*/
virtual ~PropertyOwner();
virtual ~PropertyOwner() override;
/**
* Sets the identifier for this PropertyOwner. If the PropertyOwner does not have an

View File

@@ -41,7 +41,7 @@ namespace scripting { struct LuaLibrary; }
class Dashboard : public properties::PropertyOwner {
public:
Dashboard();
~Dashboard() = default;
virtual ~Dashboard() override = default;
void render(glm::vec2& penPosition);

View File

@@ -58,7 +58,7 @@ class FramebufferRenderer : public RaycasterListener,
public DeferredcasterListener
{
public:
virtual ~FramebufferRenderer() = default;
virtual ~FramebufferRenderer() override final = default;
void initialize();
void deinitialize();

View File

@@ -46,7 +46,7 @@ namespace openspace {
class LuaConsole : public properties::PropertyOwner {
public:
LuaConsole();
~LuaConsole();
~LuaConsole() override;
void initialize();
void deinitialize();

View File

@@ -65,7 +65,7 @@ public:
ghoul::Dictionary dictionary);
Renderable(const ghoul::Dictionary& dictionary);
virtual ~Renderable() = default;
virtual ~Renderable() override = default;
virtual void initialize();
virtual void initializeGL();

View File

@@ -66,7 +66,7 @@ struct ShutdownInformation;
class RenderEngine : public properties::PropertyOwner {
public:
RenderEngine();
~RenderEngine();
virtual ~RenderEngine() override;
void initialize();
void initializeGL();

View File

@@ -58,7 +58,7 @@ public:
static constexpr const char* KeyIdentifier = "Identifier";
ScreenSpaceRenderable(const ghoul::Dictionary& dictionary);
virtual ~ScreenSpaceRenderable();
virtual ~ScreenSpaceRenderable() override;
virtual void render();
@@ -130,6 +130,7 @@ protected:
properties::Vec3Property _localRotation;
properties::FloatProperty _scale;
properties::FloatProperty _gamma;
properties::Vec3Property _multiplyColor;
properties::Vec4Property _backgroundColor;
properties::FloatProperty _opacity;
@@ -137,7 +138,7 @@ protected:
properties::TriggerProperty _delete;
glm::ivec2 _objectSize = glm::ivec2(0);
UniformCache(color, opacity, mvp, texture, backgroundColor) _uniformCache;
UniformCache(color, opacity, mvp, texture, backgroundColor, gamma) _uniformCache;
std::unique_ptr<ghoul::opengl::ProgramObject> _shader;
};

View File

@@ -47,7 +47,7 @@ public:
LightSource();
LightSource(const ghoul::Dictionary& dictionary);
virtual ~LightSource() = default;
~LightSource() override = default;
virtual glm::vec3 directionViewSpace(const RenderData& renderData) const = 0;

View File

@@ -45,7 +45,7 @@ public:
const ghoul::Dictionary& dictionary);
Rotation();
virtual ~Rotation() = default;
virtual ~Rotation() override = default;
virtual bool initialize();

View File

@@ -45,7 +45,7 @@ public:
const ghoul::Dictionary& dictionary);
Scale();
virtual ~Scale() = default;
virtual ~Scale() override = default;
virtual bool initialize();

View File

@@ -82,7 +82,7 @@ public:
// constructors & destructor
Scene(std::unique_ptr<SceneInitializer> initializer);
~Scene();
virtual ~Scene() override;
/**
* Clear the scene graph,
@@ -253,6 +253,17 @@ public:
*/
void setPropertiesFromProfile(const Profile& p);
/**
* Searches for any properties that match the regex propertyString, and returns
* the results in a vector.
*
* \param propertyString the regex string that is intended to match one or more
* properties in the currently-available properties
* \return Vector of Property objs containing property names that matched the regex
*/
std::vector<properties::Property*> propertiesMatchingRegex(
std::string propertyString);
private:
/**
* Accepts string version of a property value from a profile, converts it to the

View File

@@ -81,7 +81,7 @@ public:
static constexpr const char* KeyTag = "Tag";
SceneGraphNode();
~SceneGraphNode();
virtual ~SceneGraphNode() override;
static ghoul::mm_unique_ptr<SceneGraphNode> createFromDictionary(
const ghoul::Dictionary& dictionary);

View File

@@ -45,7 +45,7 @@ public:
const ghoul::Dictionary& dictionary);
TimeFrame();
virtual ~TimeFrame() = default;
virtual ~TimeFrame() override = default;
virtual bool initialize();

View File

@@ -47,7 +47,7 @@ public:
const ghoul::Dictionary& dictionary);
Translation();
virtual ~Translation() = default;
virtual ~Translation() override = default;
virtual bool initialize();
virtual void update(const UpdateData& data);

View File

@@ -375,7 +375,7 @@ public:
* This destructor will cancel any ongoing download and wait for its completion, so it
* might not block for a short amount of time.
*/
virtual ~HttpFileDownload() = default;
virtual ~HttpFileDownload() override = default;
/**
* Returns the path where the contents of the URL provided in the constructor will be
@@ -443,7 +443,7 @@ public:
* This destructor will cancel any ongoing download and wait for its completion, so it
* might not block for a short amount of time.
*/
virtual ~HttpMemoryDownload() = default;
virtual ~HttpMemoryDownload() override = default;
/**
* Returns a reference to the buffer that is used to store the contents of the URL

View File

@@ -58,7 +58,7 @@ public:
OpenSpaceModule(std::string name);
/// Default destructor
virtual ~OpenSpaceModule() = default;
virtual ~OpenSpaceModule() override = default;
/**
* Initialization method that will register a token of the form

View File

@@ -82,7 +82,7 @@ public:
/**
* Destructor
*/
~ScreenLog() = default;
~ScreenLog() override = default;
/**
* Overwritten ghoul::loggling::Log method that is called whenever a new log message