Fling Engine  0.00.1
Fling Engine is a game engine written in Vulkan
Camera.h
Go to the documentation of this file.
1 #pragma once
2 #include "FlingMath.h"
3 
4 namespace Fling
5 {
10  class Camera
11  {
12  public:
13  Camera() :
14  m_nearPlane(0.1f),
15  m_farPlane(1000.0f),
16  m_fieldOfView(glm::radians(45.0f)),
17  m_aspectRatio(1.6180f) //golden ratio
18  {
19  }
20 
21  virtual ~Camera() = default;
22  virtual void Update(float dt) = 0;
23 
29  const float GetNearPlane() const { return m_nearPlane; }
30  void SetNearPlane(const float& nearPlane) { m_nearPlane = nearPlane; }
31 
37  const float GetFarPlane() const { return m_farPlane; }
38  void SetFarPlane(const float& farPlane) { m_farPlane = farPlane; }
39 
45  const float GetFieldOfView() const { return m_fieldOfView; }
46  void SetFieldOfView(const float& fieldOfView) { m_fieldOfView = fieldOfView; }
47 
48  const glm::vec3& GetPosition() const { return m_position; }
49  const glm::vec3& GetRotation() const { return m_rotation; }
50  const float GetSpeed() const { return m_speed; }
51  const float GetAspectRatio() const { return m_aspectRatio; }
52 
58  const glm::mat4& GetViewMatrix() const {return m_viewMatrix; }
59 
65  const glm::mat4& GetProjectionMatrix() const { return m_projectionMatrix; }
66 
67  protected:
68  glm::mat4 m_viewMatrix;
69  glm::mat4 m_projectionMatrix;
70 
71  glm::vec3 m_position;
72  float m_speed; //padding 12 + 4 = 16
73 
74  glm::vec3 m_rotation;
76 
77  float m_nearPlane;
78  float m_farPlane;
80  };
81 } //namespace fling
glm::vec3 m_position
Definition: Camera.h:71
float m_fieldOfView
Definition: Camera.h:79
float m_speed
Definition: Camera.h:72
float m_farPlane
Definition: Camera.h:78
glm::mat4 m_viewMatrix
Definition: Camera.h:68
Base class for camera, meant to be overridden.
Definition: Camera.h:10
const glm::vec3 & GetRotation() const
Definition: Camera.h:49
glm::vec3 m_rotation
Definition: Camera.h:74
float m_nearPlane
Definition: Camera.h:77
const float GetAspectRatio() const
Definition: Camera.h:51
void SetNearPlane(const float &nearPlane)
Definition: Camera.h:30
const float GetNearPlane() const
Gets the near plane of the view frustrum.
Definition: Camera.h:29
const glm::vec3 & GetPosition() const
Definition: Camera.h:48
glm::mat4 m_projectionMatrix
Definition: Camera.h:69
virtual ~Camera()=default
const glm::mat4 & GetProjectionMatrix() const
Gets the projection matrix used by camera.
Definition: Camera.h:65
virtual void Update(float dt)=0
const float GetFieldOfView() const
Gets the field of view angle from the view frustrum.
Definition: Camera.h:45
void SetFieldOfView(const float &fieldOfView)
Definition: Camera.h:46
const float GetSpeed() const
Definition: Camera.h:50
const glm::mat4 & GetViewMatrix() const
Gets the view matrix created by the current camera position and rotation.
Definition: Camera.h:58
void SetFarPlane(const float &farPlane)
Definition: Camera.h:38
const float GetFarPlane() const
Gets the far plane of the view frustrum.
Definition: Camera.h:37
float m_aspectRatio
Definition: Camera.h:75
Definition: Engine.h:13
Camera()
Definition: Camera.h:13