Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
camera.h
Go to the documentation of this file.
1 #pragma once
2 #include "node.h"
3 
14 class Camera2D final : public Node2D {
15 public:
17  explicit Camera2D(const std::string& name) : Node2D(name) {}
18 
19 
20  void set_offset(const glm::vec2& offset);
21 
22  [[nodiscard]] glm::vec2 get_offset() const;
23 
24  void set_zoom(const glm::vec2& zoom);
25 
26  [[nodiscard]] glm::vec2 get_zoom() const;
27 
28  void set_viewport(int width, int height);
29 
30  [[nodiscard]] glm::vec2 get_viewport() const;
31 
32  void follow(Node2D* target);
33 
34  void process(double dt) override;
35 
36  [[nodiscard]] glm::mat4 get_view_matrix() const;
37 
38 private:
39  glm::vec2 _offset = {0.f, 0.f};
40  glm::vec2 _zoom = {1.f, 1.f};
41  glm::vec2 _viewport_size = {0.f, 0.f};
42  glm::mat4 _view_matrix = glm::mat4(1.f);
43  Node2D* _follow_target = nullptr;
44 };
Camera2D component.
Definition: camera.h:14
void set_offset(const glm::vec2 &offset)
Definition: camera.cpp:6
void set_zoom(const glm::vec2 &zoom)
Definition: camera.cpp:9
glm::vec2 get_viewport() const
Definition: camera.cpp:14
Camera2D(const std::string &name)
Definition: camera.h:17
void process(double dt) override
Definition: camera.cpp:18
void follow(Node2D *target)
Definition: camera.cpp:16
glm::vec2 get_offset() const
Definition: camera.cpp:7
void set_viewport(int width, int height)
Definition: camera.cpp:12
glm::vec2 get_zoom() const
Definition: camera.cpp:10
glm::mat4 get_view_matrix() const
Definition: camera.cpp:32
2D Node base class for scene graph.
Definition: node.h:25