aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/manager/SystemManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/manager/SystemManager.h')
-rw-r--r--src/crepe/manager/SystemManager.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/crepe/manager/SystemManager.h b/src/crepe/manager/SystemManager.h
index 6cf7f2b..a47961b 100644
--- a/src/crepe/manager/SystemManager.h
+++ b/src/crepe/manager/SystemManager.h
@@ -1,11 +1,21 @@
#pragma once
+#include <typeindex>
+#include <unordered_map>
+#include <memory>
+
#include "../system/System.h"
#include "Manager.h"
namespace crepe {
+/**
+ * \brief Collection of all systems
+ *
+ * This manager aggregates all systems and provides utility functions to retrieve references to
+ * and update systems.
+ */
class SystemManager : public Manager {
public:
SystemManager(Mediator &);
@@ -50,9 +60,23 @@ public:
T & get_system();
public:
+ /**
+ * \brief SystemManager snapshot
+ *
+ * The SystemManager snapshot only stores which systems are active
+ */
typedef std::unordered_map<std::type_index, bool> Snapshot;
+ /**
+ * \brief Save a snapshot of the systems' state
+ * \returns Copy of each system's active property
+ */
Snapshot save();
+ /**
+ * \brief Restore system active state from a snapshot
+ * \param snapshot Snapshot to restore from (as returned by \c save())
+ */
void restore(const Snapshot & snapshot);
+ //! Disable all systems
void disable_all();
};