GameKit  0.0.1a
C++ gamedev tools
Camera.hpp
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: Camera.hpp
5  *
6  * Description:
7  *
8  * Created: 26/12/2018 16:33:40
9  *
10  * Author: Quentin Bazin, <quent42340@gmail.com>
11  *
12  * =====================================================================================
13  */
14 #ifndef GK_CAMERA_HPP_
15 #define GK_CAMERA_HPP_
16 
17 #include "gk/gl/View.hpp"
18 
19 namespace gk {
20 
27 class Camera : public View {
28  public:
29  Camera(float fov, float near, float far);
30  virtual ~Camera() = default;
31 
32  const Vector3f &getPosition() const override { return m_position; }
33  const Vector3f &getDirection() const { return m_direction; }
34  const Vector3f &getUpVector() const { return m_upVector; }
35 
36  float getFieldOfView() const { return m_fieldOfView; }
37  float getAspectRatio() const { return m_aspect; }
38  float getNearClippingPlane() const { return m_nearPlane; }
39  float getFarClippingPlane() const { return m_farPlane; }
40 
41  void setPosition(float x, float y, float z) { setPosition(Vector3f(x, y, z)); }
42  void setPosition(const Vector3f &position);
43 
44  void setDirection(float x, float y, float z) { setDirection(Vector3f(x, y, z)); }
45  void setDirection(const Vector3f &direction);
46 
47  void setTargetPosition(float x, float y, float z) { setTargetPosition(Vector3f(x, y, z)); }
48  void setTargetPosition(const Vector3f &target);
49 
50  void setUpVector(float x, float y, float z) { setUpVector(Vector3f(x, y, z)); }
51  void setUpVector(const Vector3f &upVector);
52 
53  void setFieldOfView(float fov);
54  void setAspectRatio(float aspect);
55  void setNearClippingPlane(float distance);
56  void setFarClippingPlane(float distance);
57 
58  const Transform &getTransform() const override;
59  const Transform &getViewTransform() const override;
60 
61  private:
62  Vector3f m_position{0, 0, 0};
63  Vector3f m_direction{0, 0, -1};
64  Vector3f m_upVector{0, 1, 0};
65 
66  float m_fieldOfView = 90.0f;
67  float m_aspect = 1.0f;
68  float m_nearPlane = 0.1f;
69  float m_farPlane = 1000.0f;
70 };
71 
72 } // namespace gk
73 
74 #endif // GK_CAMERA_HPP_
Vector3< float > Vector3f
Definition: Vector3.hpp:75
2D view that defines what is shown on screen
Definition: View.hpp:29
Vector3f m_direction
Definition: Camera.hpp:63
float getFarClippingPlane() const
Definition: Camera.hpp:39
void setPosition(float x, float y, float z)
Definition: Camera.hpp:41
float m_farPlane
Definition: Camera.hpp:69
float getFieldOfView() const
Definition: Camera.hpp:36
Camera(float fov, float near, float far)
Definition: Camera.cpp:21
void setFieldOfView(float fov)
Definition: Camera.cpp:49
float m_fieldOfView
Definition: Camera.hpp:66
void setTargetPosition(float x, float y, float z)
Definition: Camera.hpp:47
virtual ~Camera()=default
float getNearClippingPlane() const
Definition: Camera.hpp:38
Vector3f m_upVector
Definition: Camera.hpp:64
const Vector3f & getUpVector() const
Definition: Camera.hpp:34
void setUpVector(float x, float y, float z)
Definition: Camera.hpp:50
const Transform & getTransform() const override
Definition: Camera.cpp:69
void setFarClippingPlane(float distance)
Definition: Camera.cpp:64
void setDirection(float x, float y, float z)
Definition: Camera.hpp:44
3D camera that defines what is shown on screen
Definition: Camera.hpp:27
void setAspectRatio(float aspect)
Definition: Camera.cpp:54
Vector3f m_position
Definition: Camera.hpp:62
void setNearClippingPlane(float distance)
Definition: Camera.cpp:59
const Vector3f & getPosition() const override
Definition: Camera.hpp:32
float m_nearPlane
Definition: Camera.hpp:68
const Transform & getViewTransform() const override
Definition: Camera.cpp:79
const Vector3f & getDirection() const
Definition: Camera.hpp:33
float m_aspect
Definition: Camera.hpp:67
float getAspectRatio() const
Definition: Camera.hpp:37