12 eyePos = glm::vec3(0.f, 0.f, -770.0f);
13 aimPos = glm::vec3(0.f, 0.f, 0.f);
20 void init()
override {
22 _projectionMatrix = glm::ortho(0.0f, (
float)_screenWidth, 0.0f, (
float)_screenHeight);
24 updateCameraOrientation();
26 _cameraMatrix = glm::mat4(1.0f);
28 _cameraMatrix = _projectionMatrix * _viewMatrix;
31 void update()
override {
34 updateCameraOrientation();
36 _cameraMatrix = glm::mat4(1.0f);
38 _cameraMatrix = _projectionMatrix * _viewMatrix;
44 glm::vec3 getEulerAnglesFromDirection(glm::vec3 direction) {
45 float yaw = glm::atan(direction.x, direction.z);
46 float pitch = glm::asin(-direction.y);
49 return glm::vec3(glm::degrees(pitch), glm::degrees(yaw), glm::degrees(roll));
55 glm::ivec2 getCameraDimensions()
const override {
56 glm::vec2 cameraDimensions = { _screenWidth, _screenHeight };
57 return cameraDimensions;
60 SDL_FRect getCameraRect()
const override {
61 float cameraWidth = getCameraDimensions().x / getScale();
62 float cameraHeight = getCameraDimensions().y / getScale();
64 float cameraX = eyePos.x - cameraWidth / 2.0f + getCameraDimensions().x / 2;
65 float cameraY = eyePos.y - cameraHeight / 2.0f + getCameraDimensions().y / 2;
67 SDL_FRect cameraRect = { cameraX , cameraY , cameraWidth, cameraHeight };
71 void setCameraMatrix(glm::mat4 newMatrix) {