aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/system/AnimatorSystem.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-08 20:00:21 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-08 20:00:21 +0100
commit7817c85e84560933a33ad86ec3f9ca3d48d327d5 (patch)
treec309b9f779ca33f01d5755222a56ffca517baef4 /src/crepe/system/AnimatorSystem.h
parent0feda3d123ff99a1b9e41837482268bebfd9140a (diff)
parentac8a58a2a16118ea4c40fcc533c3420edde45122 (diff)
Merge branch 'niels/cleanup' of github.com:lonkaars/crepe
Diffstat (limited to 'src/crepe/system/AnimatorSystem.h')
-rw-r--r--src/crepe/system/AnimatorSystem.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/crepe/system/AnimatorSystem.h b/src/crepe/system/AnimatorSystem.h
new file mode 100644
index 0000000..c377ce9
--- /dev/null
+++ b/src/crepe/system/AnimatorSystem.h
@@ -0,0 +1,58 @@
+#pragma once
+
+#include "System.h"
+
+
+
+//TODO:
+// control if flip works with animation system
+
+namespace crepe {
+
+/**
+ * \brief The AnimatorSystem is responsible for managing and updating all Animator components.
+ *
+ * This system is responsible for controlling the behavior of the animations for all entities
+ * that have the Animator component attached. It updates the animations by controlling their
+ * frame changes, looping behavior, and overall animation state.
+ */
+class AnimatorSystem : public System {
+
+public:
+ /**
+ * \brief Retrieves the singleton instance of the AnimatorSystem.
+ *
+ * \return A reference to the single instance of the AnimatorSystem.
+ *
+ * This method ensures that there is only one instance of the AnimatorSystem, following the
+ * singleton design pattern. It can be used to access the system globally.
+ */
+ static AnimatorSystem & get_instance();
+
+ /**
+ * \brief Updates the Animator components.
+ *
+ * This method is called periodically (likely every frame) to update the state of all
+ * Animator components, moving the animations forward and managing their behavior (e.g., looping).
+ */
+ void update() override;
+
+private:
+ /**
+ * \brief Private constructor for the AnimatorSystem.
+ *
+ * The constructor is private to enforce the singleton pattern, ensuring that only
+ * one instance of this system can exist.
+ */
+ AnimatorSystem();
+
+ /**
+ * \brief Private destructor for the AnimatorSystem.
+ *
+ * The destructor cleans up any resources used by the AnimatorSystem. It is private
+ * to maintain the singleton pattern and prevent direct deletion.
+ */
+ ~AnimatorSystem();
+};
+
+} // namespace crepe