Fling Engine  0.00.1
Fling Engine is a game engine written in Vulkan
FirstPersonCamera.h
Go to the documentation of this file.
1 #pragma once
2 #include "Camera.h"
3 
4 namespace Fling
5 {
9  class FirstPersonCamera : public Camera
10  {
11  public:
12  FirstPersonCamera(float aspectRatio, float t_MoveSpeed = 10.0f, float t_RotSpeed = 40.f);
13 
15  glm::vec3 position,
16  glm::vec3 rotation,
17  float speed,
18  float aspectRatio);
19 
21  glm::vec3 front, glm::vec3 up,
22  glm::vec3 position, glm::vec3 rotation,
23  float speed,
24  float nearPlane, float farPlane,
25  float fov, float aspectRatio);
26 
27  void Update(float dt) override;
28 
29  float GetRotationSpeed() const { return m_RotationSpeed; }
30  void SetRotationSpeed(float t_NewSpeed) { m_RotationSpeed = t_NewSpeed; }
31 
32  bool IsRotating() const { return m_IsRotating; }
33 
34  private:
35  glm::vec3 m_front;
36  glm::vec3 m_up;
37  glm::vec3 m_right;
38  glm::vec3 m_worldUp;
39  glm::vec3 m_worldFront = { 0.f, 0.f, -1.0 };
40 
41  float m_RotationSpeed = 20.0f;
42  bool m_IsRotating = false;
43 
44  const float MAX_PITCH = (glm::pi<float>() / 2.0f) - .017f; //subtract one degrees for gimbal lock
46 
47  void UpdateViewMatrix();
49  void UpdateCameraVectors();
50  };
51 }
represents the current mouse position in screen space
Definition: Input.h:13
float GetRotationSpeed() const
Definition: FirstPersonCamera.h:29
void Update(float dt) override
Definition: FirstPersonCamera.cpp:67
void SetRotationSpeed(float t_NewSpeed)
Definition: FirstPersonCamera.h:30
void UpdateViewMatrix()
Definition: FirstPersonCamera.cpp:140
glm::vec3 m_worldFront
Definition: FirstPersonCamera.h:39
Base class for camera, meant to be overridden.
Definition: Camera.h:10
A simple first person camera.
Definition: FirstPersonCamera.h:9
bool IsRotating() const
Definition: FirstPersonCamera.h:32
MousePos m_PrevMousePos
Definition: FirstPersonCamera.h:45
glm::vec3 m_right
Definition: FirstPersonCamera.h:37
glm::vec3 m_worldUp
Definition: FirstPersonCamera.h:38
void UpdateCameraVectors()
Definition: FirstPersonCamera.cpp:150
void UpdateProjectionMatrix()
Definition: FirstPersonCamera.cpp:145
bool m_IsRotating
Definition: FirstPersonCamera.h:42
FirstPersonCamera(float aspectRatio, float t_MoveSpeed=10.0f, float t_RotSpeed=40.f)
Definition: FirstPersonCamera.cpp:9
glm::vec3 m_front
Definition: FirstPersonCamera.h:35
glm::vec3 m_up
Definition: FirstPersonCamera.h:36
const float MAX_PITCH
Definition: FirstPersonCamera.h:44
float m_RotationSpeed
Definition: FirstPersonCamera.h:41
Definition: Engine.h:29