Rendering Engine 0.2.0
Modular Graphics Rendering Engine | v0.2.0
Loading...
Searching...
No Matches
camera.cpp
Go to the documentation of this file.
1#include "camera.hpp"
2#include "i_application.hpp"
3#include "scene_component.hpp"
4
5namespace rendering_engine
6{
7
8const float Camera::sDefaultFieldOfView = 45.0f;
9const float Camera::sDefaultNearPlaneDistance = 0.01f;
10const float Camera::sDefaultFarPlaneDistance = 1000.0f;
11
13 :
14 mApp(app),
15 mSceneComponent(std::make_unique<SceneComponent>()),
19{
20 mAspectRatio = static_cast<float>(mApp.GetScreenSettings().width) /
21 static_cast<float>(mApp.GetScreenSettings().height);
22}
23
30void Camera::Update(float deltaTime)
31{
34}
35void Camera::SetPosition(const glm::vec3& position)
36{
37 mSceneComponent->SetPosition(position);
38}
39void Camera::SetRotation(const glm::quat& rotation)
40{
41 mSceneComponent->SetRotation(rotation);
42}
43void Camera::SetRotation(const glm::vec3& rotation)
44{
45 mSceneComponent->SetRotation(rotation);
46}
47glm::vec3 Camera::GetPosition() const
48{
49 return mSceneComponent->GetPosition();
50}
51glm::quat Camera::GetRotationQuat() const
52{
53 return mSceneComponent->GetRotationQuat();
54}
55glm::vec3 Camera::GetRotation() const
56{
57 return mSceneComponent->GetRotation();
58}
59glm::vec3 Camera::GetForward() const
60{
61 return mSceneComponent->GetForward();
62}
63glm::vec3 Camera::GetUp() const
64{
65 return mSceneComponent->GetUp();
66}
67glm::vec3 Camera::GetRight() const
68{
69 return mSceneComponent->GetRight();
70}
71const glm::mat4& Camera::ViewMatrix() const
72{
73 return mViewMatrix;
74}
75const glm::mat4& Camera::ProjectionMatrix() const
76{
77 return mProjectionMatrix;
78}
80{
82}
84{
85 // Turn leff, as by default it will look to the right
86 SetPosition(glm::vec3(-10.0f, 0.0f, 0.0f));
87 SetRotation(glm::vec3(0.0f, 0.0f, 0.0f));
88}
90{
91 mAspectRatio = static_cast<float>(mApp.GetScreenSettings().width) /
92 static_cast<float>(mApp.GetScreenSettings().height);
94}
96{
97 const glm::vec3 target = mSceneComponent->GetPosition() + mSceneComponent->GetForward();
98 mViewMatrix = glm::lookAt(mSceneComponent->GetPosition(), target, mSceneComponent->GetUp());
99}
100} //rendering_engine
glm::vec3 GetForward() const
Gets the camera's forward direction vector.
Definition camera.cpp:59
const glm::mat4 & ViewMatrix() const
Gets the camera view matrix.
Definition camera.cpp:71
IApplication & mApp
Definition camera.hpp:154
glm::quat GetRotationQuat() const
Gets the camera rotation as a quaternion.
Definition camera.cpp:51
virtual void Initialize()
Initializes camera parameters and matrices.
Definition camera.cpp:24
const glm::mat4 & ProjectionMatrix() const
Gets the camera projection matrix.
Definition camera.cpp:75
void SetRotation(const glm::quat &rotation)
Sets the camera rotation via quaternion.
Definition camera.cpp:39
glm::vec3 GetPosition() const
Gets the camera position.
Definition camera.cpp:47
static const float sDefaultFarPlaneDistance
Definition camera.hpp:164
glm::vec3 GetUp() const
Gets the camera's up direction vector.
Definition camera.cpp:63
glm::vec3 GetRight() const
Gets the camera's right direction vector.
Definition camera.cpp:67
static const float sDefaultFieldOfView
Definition camera.hpp:161
void SetPosition(const glm::vec3 &position)
Sets the camera position in world space.
Definition camera.cpp:35
std::unique_ptr< SceneComponent > mSceneComponent
Definition camera.hpp:156
glm::mat4 ViewProjectionMatrix() const
Gets the combined view-projection matrix.
Definition camera.cpp:79
glm::mat4 mProjectionMatrix
Definition camera.hpp:159
static const float sDefaultNearPlaneDistance
Definition camera.hpp:163
void Reset()
Resets the camera to the default position and rotation.
Definition camera.cpp:83
Camera(IApplication &app)
Constructs a camera for the given application context.
Definition camera.cpp:12
void UpdateProjectionMatrix()
Updates the camera's projection matrix (based on FOV, aspect, near/far).
Definition camera.cpp:89
virtual void Update(float deltaTime)
Updates camera logic, recalculates view/projection matrices as needed.
Definition camera.cpp:30
glm::vec3 GetRotation() const
Gets the camera rotation as Euler angles (degrees).
Definition camera.cpp:55
void UpdateViewMatrix()
Updates the camera's view matrix (based on position/orientation).
Definition camera.cpp:95
Defines a generic application interface for rendering-based programs.
Represents a 3D transformable scene component with position, rotation, and scale.