galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Camera.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_GRAPHICS_CAMERA_HPP_
9#define GALAXY_GRAPHICS_CAMERA_HPP_
10
11#include "galaxy/fs/Serializable.hpp"
13#include "galaxy/utils/Globals.hpp"
14
15namespace galaxy
16{
17 namespace input
18 {
19 class CameraController;
20 } // namespace input
21
22 namespace graphics
23 {
27 class Camera final : public Transform, fs::Serializable
28 {
29 friend class input::CameraController;
30
31 public:
35 struct alignas(16) Data final
36 {
40 glm::mat4 m_model_view = glm::mat4 {GALAXY_IDENTITY_MATRIX};
41
45 glm::mat4 m_projection = glm::mat4 {GALAXY_IDENTITY_MATRIX};
46 };
47
51 Camera();
52
58 Camera(const nlohmann::json& json);
59
63 Camera(Camera&&);
64
69
73 Camera(const Camera&);
74
78 Camera& operator=(const Camera&);
79
83 virtual ~Camera();
84
93 void set_viewport(const float width, const float height);
94
101 void translate(const float x, const float y) override;
102
108 void rotate(const float degrees) override;
109
115 [[nodiscard]]
116 const glm::vec2& get_viewport() const;
117
123 [[nodiscard]]
124 const glm::mat4& get_model_view();
125
131 [[nodiscard]]
132 const glm::mat4& get_proj();
133
139 [[nodiscard]]
140 Data& get_data();
141
147 [[nodiscard]]
148 nlohmann::json serialize() override;
149
155 void deserialize(const nlohmann::json& json) override;
156
157 private:
166 void set_projection(const float left, const float right, const float bottom, const float top);
167
171 void recalculate();
172
173 public:
178
183
188
189 private:
194
198 glm::vec2 m_viewport;
199 };
200 } // namespace graphics
201} // namespace galaxy
202
203#endif
Orthographic 2D camera.
Definition Camera.hpp:28
const glm::mat4 & get_proj()
Get the Camera projection.
Definition Camera.cpp:124
void set_viewport(const float width, const float height)
Set Viewport.
Definition Camera.cpp:92
const glm::vec2 & get_viewport() const
Get camera viewport.
Definition Camera.cpp:113
float m_translation_speed
Movement speed.
Definition Camera.hpp:182
Data m_data
Camera data.
Definition Camera.hpp:193
void set_projection(const float left, const float right, const float bottom, const float top)
Set camera projection.
Definition Camera.cpp:136
nlohmann::json serialize() override
Serializes object.
Definition Camera.cpp:158
void translate(const float x, const float y) override
Translate (move) position.
Definition Camera.cpp:97
Camera & operator=(Camera &&)
Move assignment operator.
Definition Camera.cpp:43
void deserialize(const nlohmann::json &json) override
Deserializes from object.
Definition Camera.cpp:173
glm::vec2 m_viewport
Camera viewport size.
Definition Camera.hpp:198
virtual ~Camera()
Destructor.
Definition Camera.cpp:88
void recalculate()
Recalculates the model view matrix.
Definition Camera.cpp:149
Data & get_data()
Get camera view and proj.
Definition Camera.cpp:130
Camera()
Constructor.
Definition Camera.cpp:17
void rotate(const float degrees) override
Rotate entity.
Definition Camera.cpp:105
bool m_allow_rotation
Allow camera to rotate.
Definition Camera.hpp:177
const glm::mat4 & get_model_view()
Retrieve internal transformation matrix.
Definition Camera.cpp:118
float m_rotation_speed
Rotational speed.
Definition Camera.hpp:187
Defines the 2D transformation of an entity.
Definition Transform.hpp:21
Animated.cpp galaxy.
Definition Animated.cpp:16
glm::mat4 m_model_view
Combined transformation matrix.
Definition Camera.hpp:40
glm::mat4 m_projection
Camera projection matrix.
Definition Camera.hpp:45