PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
camera.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_CAMERA_H
2#define PGR_SEM_COPAKOND_CAMERA_H
3
4#include "../pgr-portable.h"
5#include "geometry.h"
6#include "../light/fog.h"
7
8#define FRONT 0
9#define BACK 1
10#define LEFT 2
11#define RIGHT 3
12#define UP 4
13#define DOWN 5
14
15#define MAX_FOV 359.0f
16#define MIN_FOV 1.0f
17
18namespace copakond {
20 class Camera : public Geometry {
21 private:
22 const glm::vec3 _worldUp = glm::vec3(0.0f, 1.0f, 0.0f);
23
24 glm::vec3 _front;
25 glm::vec3 _up;
26 glm::vec3 _right;
27
28 float _movementSpeed;
29 float _mouseSensitivity;
30 float _maxPitch;
31
32 float _nearZ;
33 float _farZ;
34 float _fov;
35
36 Fog _fog = Fog();
37
39 void updateCameraVectors();
40
41 public:
42 Camera(const glm::vec3 &startPosition, const glm::vec3 &startLookPoint, float distance);
43
48 void lookToPoint(const glm::vec3 &point);
49 void setRotation(const glm::vec3& rotation) override;
50 void setRotationDegrees(const glm::vec3& rotationDegrees) override;
51 void addFov(float fov);
52
53 glm::mat4 getViewMatrix();
54
60 glm::mat4 getProjectionMatrix(float aspectWidth, float aspectHeight);
61
62 glm::vec3 getPosition() const { return _position; }
63
64 glm::vec3& position() { return _position; }
65 glm::vec3& rotation() { return _rotation; }
66
72 void processKeyboard(int direction, float deltaTime);
73 void processMouseMovement(float deltaX, float deltaY);
74 void processMouseDrag(float deltaX, float deltaY);
75
76 void setFog(const Fog &fog) { _fog = fog; }
77 Fog getFog() const { return _fog; }
78 };
79}
80#endif //PGR_SEM_COPAKOND_CAMERA_H
Fog getFog() const
Definition camera.h:77
void setFog(const Fog &fog)
Definition camera.h:76
void processKeyboard(int direction, float deltaTime)
Processes keyboard movement input.
Definition camera.cpp:60
void processMouseMovement(float deltaX, float deltaY)
Definition camera.cpp:89
glm::vec3 getPosition() const
Definition camera.h:62
void addFov(float fov)
Definition camera.cpp:84
void processMouseDrag(float deltaX, float deltaY)
Definition camera.cpp:103
void setRotationDegrees(const glm::vec3 &rotationDegrees) override
Definition camera.cpp:22
glm::vec3 & position()
Definition camera.h:64
void lookToPoint(const glm::vec3 &point)
Orients the camera to look directly at a specific world coordinate.
Definition camera.cpp:41
Camera(const glm::vec3 &startPosition, const glm::vec3 &startLookPoint, float distance)
Definition camera.cpp:4
glm::mat4 getProjectionMatrix(float aspectWidth, float aspectHeight)
Generates perspective projection matrix.
Definition camera.cpp:55
glm::mat4 getViewMatrix()
Definition camera.cpp:51
void setRotation(const glm::vec3 &rotation) override
Definition camera.cpp:17
glm::vec3 & rotation()
Definition camera.h:65
Simple linear fog parameters.
Definition fog.h:8
glm::vec3 _position
Definition geometry.h:14
glm::vec3 _rotation
Definition geometry.h:15
Geometry()
Definition geometry.cpp:4
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3