aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/Camera.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-12 15:11:51 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-12 15:11:51 +0100
commit33454c2c8d8c0abdfd405608af4e6cd53a25e7c4 (patch)
treeef5131afc629815e993775423602a6e8af5fcb5f /src/crepe/api/Camera.h
parent067247360d68042ad5466b802399338c14d7dc58 (diff)
parent656df6ddd6b5231705798540c347efeebf8ac8a9 (diff)
merge `master` into `loek/cleanup`
Diffstat (limited to 'src/crepe/api/Camera.h')
-rw-r--r--src/crepe/api/Camera.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h
new file mode 100644
index 0000000..ba3a9ef
--- /dev/null
+++ b/src/crepe/api/Camera.h
@@ -0,0 +1,55 @@
+#pragma once
+
+#include <cstdint>
+
+#include "Color.h"
+#include "Component.h"
+
+namespace crepe {
+
+/**
+ * \class Camera
+ * \brief Represents a camera component for rendering in the game.
+ *
+ * The Camera class defines the view parameters, including background color,
+ * aspect ratio, position, and zoom level. It controls what part of the game
+ * world is visible on the screen.
+ */
+class Camera : public Component {
+
+public:
+ /**
+ * \brief Constructs a Camera with the specified ID and background color.
+ * \param id Unique identifier for the camera component.
+ * \param bg_color Background color for the camera view.
+ */
+ Camera(uint32_t id, const Color & bg_color);
+ ~Camera(); // dbg_trace only
+
+public:
+ //! Background color of the camera view.
+ Color bg_color;
+
+ //! Aspect ratio height for the camera.
+ double aspect_height = 480;
+
+ //! Aspect ratio width for the camera.
+ double aspect_width = 640;
+
+ //! X-coordinate of the camera position.
+ double x = 0.0;
+
+ //! Y-coordinate of the camera position.
+ double y = 0.0;
+
+ //! Zoom level of the camera view.
+ double zoom = 1.0;
+
+public:
+ /**
+ * \brief Gets the maximum number of camera instances allowed.
+ * \return Maximum instance count as an integer.
+ */
+ virtual int get_instances_max() const { return 10; }
+};
+} // namespace crepe