aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/system/ScriptSystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/system/ScriptSystem.h')
-rw-r--r--src/crepe/system/ScriptSystem.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/crepe/system/ScriptSystem.h b/src/crepe/system/ScriptSystem.h
new file mode 100644
index 0000000..257b615
--- /dev/null
+++ b/src/crepe/system/ScriptSystem.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "../manager/LoopTimerManager.h"
+
+#include "System.h"
+
+namespace crepe {
+
+class Script;
+
+/**
+ * \brief Script system
+ *
+ * The script system is responsible for all \c BehaviorScript components, and calls the methods
+ * on classes derived from \c Script.
+ */
+class ScriptSystem : public System {
+public:
+ using System::System;
+
+public:
+ //! Call Script::fixed_update() on all active \c BehaviorScript instances
+ void fixed_update() override;
+ //! Call Script::frame_update() on all active \c BehaviorScript instances
+ void frame_update() override;
+
+private:
+ /**
+ * \brief Call Script `*_update` member function on all active \c BehaviorScript instances
+ *
+ * \note This routine also calls Script::init() if this has not been done before on the \c
+ * BehaviorScript instance.
+ */
+ void update(void (Script::*update_function)(duration_t), const duration_t & delta_time);
+};
+
+} // namespace crepe