diff options
author | hnOsmium0001 <[email protected]> | 2022-04-25 20:22:07 -0700 |
---|---|---|
committer | hnOsmium0001 <[email protected]> | 2022-04-25 20:22:07 -0700 |
commit | f54370de7e4214cb7813d26b1a39a8f6e42b7b56 (patch) | |
tree | 20913b4099b77af933fcd2ebb4e73f53b366ad8f /source/Camera.cpp | |
parent | c8ebee643f23c34ff57f69f8dfcf1903b59ea9d1 (diff) |
Initial work on rendering sprites to screen
Diffstat (limited to 'source/Camera.cpp')
-rw-r--r-- | source/Camera.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/source/Camera.cpp b/source/Camera.cpp new file mode 100644 index 0000000..90acd8f --- /dev/null +++ b/source/Camera.cpp @@ -0,0 +1,33 @@ +#include "Camera.hpp" + +#include "AppConfig.hpp" + +#include <glm/gtc/matrix_transform.hpp> + +void Camera::Move(glm::vec3 pos) { + this->pos = pos; +} + +void Camera::LookAt(glm::vec3 pos) { + this->lookAt = pos; +} + +void Camera::SetHasPerspective(bool perspective) { + this->perspective = perspective; +} + +glm::mat4 Camera::CalcViewMatrix() const { + return glm::lookAt(pos, lookAt, glm::vec3(0, 1, 0)); +} + +glm::mat4 Camera::CalcProjectionMatrix() const { + if (perspective) { + return glm::perspective(90.0f, AppConfig::mainWindowAspectRatio, 0.1f, 1000.0f); + } else { + return glm::ortho( + pos.x - AppConfig::mainWidnowWidth / 2, + pos.x + AppConfig::mainWidnowWidth / 2, + pos.y - AppConfig::mainWindowHeight / 2, + pos.y + AppConfig::mainWindowHeight / 2); + } +} |