aboutsummaryrefslogtreecommitdiff
path: root/source/Camera.cpp
diff options
context:
space:
mode:
authorhnOsmium0001 <[email protected]>2022-04-25 20:22:07 -0700
committerhnOsmium0001 <[email protected]>2022-04-25 20:22:07 -0700
commitf54370de7e4214cb7813d26b1a39a8f6e42b7b56 (patch)
tree20913b4099b77af933fcd2ebb4e73f53b366ad8f /source/Camera.cpp
parentc8ebee643f23c34ff57f69f8dfcf1903b59ea9d1 (diff)
Initial work on rendering sprites to screen
Diffstat (limited to 'source/Camera.cpp')
-rw-r--r--source/Camera.cpp33
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);
+ }
+}