GameKit  0.0.1a
C++ gamedev tools
View.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: View.hpp
5  *
6  * Description:
7  *
8  * Created: 01/01/2019 21:30:32
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_VIEW_HPP
15 #define GK_VIEW_HPP
16 
17 #include <gk/core/Rect.hpp>
18 #include <gk/core/Vector3.hpp>
19 #include <gk/gl/Transform.hpp>
20 
21 namespace gk {
22 
29 class View {
30  public:
31  View();
32  View(const Vector3f &center, const Vector2f &size);
33  explicit View(const FloatRect &rectangle);
34  virtual ~View() = default;
35 
36  void setCenter(float x, float y, float z = 0);
37  void setCenter(const Vector3f &position) { setCenter(position.x, position.y, position.y); }
38 
39  void setSize(float width, float height);
40  void setSize(const Vector2f &size) { setSize(size.x, size.y); }
41 
42  void setRotation(float angle);
43 
44  void setViewport(const FloatRect &viewport) { m_viewport = viewport; }
45 
46  void reset(const FloatRect &rectangle);
47 
48  const Vector3f &getCenter() const { return m_position; }
49  const Vector2f &getSize() const { return m_size; }
50 
51  float getRotation() const { return m_rotation; }
52 
53  const FloatRect &getViewport() const { return m_viewport; }
54 
55  void move(float offsetX, float offsetY, float offsetZ = 0);
56  void move(const Vector3f &offset) { setCenter(m_position + offset); }
57 
58  void rotate(float angle) { setRotation(m_rotation + angle); }
59 
60  void zoom(float factor) { setSize(m_size.x * factor, m_size.y * factor); }
61 
62  virtual const Transform &getTransform() const;
63  virtual const Transform &getViewTransform() const;
64 
65  virtual const Vector3f &getPosition() const { return m_position; }
66 
67  protected:
68  mutable bool m_transformUpdated = false;
69  mutable bool m_viewTransformUpdated = false;
70 
73 
74  private:
77 
78  float m_rotation = 0.0f;
79 
80  FloatRect m_viewport{0, 0, 1, 1};
81 };
82 
83 } // namespace gk
84 
85 
86 #endif // GK_VIEW_HPP
View()
Definition: View.cpp:23
bool m_transformUpdated
Definition: View.hpp:68
void setSize(float width, float height)
Definition: View.cpp:43
const FloatRect & getViewport() const
Definition: View.hpp:53
2D view that defines what is shown on screen
Definition: View.hpp:29
Transform m_transform
Definition: View.hpp:71
Vector2f m_size
Definition: View.hpp:76
void move(float offsetX, float offsetY, float offsetZ=0)
Definition: View.cpp:71
virtual const Vector3f & getPosition() const
Definition: View.hpp:65
const Vector3f & getCenter() const
Definition: View.hpp:48
float getRotation() const
Definition: View.hpp:51
Vector3f m_position
Definition: View.hpp:75
Transform m_viewTransform
Definition: View.hpp:72
void setSize(const Vector2f &size)
Definition: View.hpp:40
void rotate(float angle)
Definition: View.hpp:58
void setCenter(float x, float y, float z=0)
Definition: View.cpp:35
void reset(const FloatRect &rectangle)
Definition: View.cpp:59
void zoom(float factor)
Definition: View.hpp:60
virtual ~View()=default
float m_rotation
Definition: View.hpp:78
virtual const Transform & getTransform() const
Definition: View.cpp:75
const Vector2f & getSize() const
Definition: View.hpp:49
FloatRect m_viewport
Definition: View.hpp:80
bool m_viewTransformUpdated
Definition: View.hpp:69
void setRotation(float angle)
Definition: View.cpp:51
virtual const Transform & getViewTransform() const
Definition: View.cpp:85
void setCenter(const Vector3f &position)
Definition: View.hpp:37
void move(const Vector3f &offset)
Definition: View.hpp:56
void setViewport(const FloatRect &viewport)
Definition: View.hpp:44