Saxum/camera.cc

51 lines
1.0 KiB
C++
Raw Normal View History

2014-11-13 16:17:46 +00:00
#include "camera.hh"
Camera::Camera(glm::vec2 rotation, float distance) {
2014-11-13 16:17:46 +00:00
this->rotation = rotation;
this->distance = distance;
}
Camera::Camera() {
rotation = glm::vec2(0.0f, 0.0f);
2014-11-13 16:17:46 +00:00
distance = 1.0f;
}
Camera::~Camera() {
}
float Camera::getDistance() {
return distance;
}
void Camera::setDistance(float distance) {
this->distance = distance;
2014-11-17 12:29:41 +00:00
updatePosition();
2014-11-13 16:17:46 +00:00
}
glm::vec2 Camera::getRotation() {
2014-11-13 16:17:46 +00:00
return rotation;
}
void Camera::setRotation(glm::vec2 rotation) {
2014-11-13 17:17:58 +00:00
this->rotation = rotation;
2014-11-17 12:29:41 +00:00
updatePosition();
2014-11-13 17:17:58 +00:00
}
void Camera::updateRotation(glm::vec2 rotation) {
2014-11-17 12:29:41 +00:00
this->rotation += rotation;
updatePosition();
2014-11-13 16:17:46 +00:00
}
2014-11-17 12:29:41 +00:00
void Camera::updatePosition() {
glm::vec4 cameraVector = glm::vec4(0.0f, 0.0f, distance, 0.0f);
// rotate vector
glm::mat4 rotationMatrix =
glm::rotate<float>(rotation[1], glm::vec3(0.0f, 1.0f, 0.0f)) * glm::rotate<float>(rotation[0], glm::vec3(1.0f, 0.0f, 0.0f));
this->vector = glm::vec3(rotationMatrix * cameraVector);
}
glm::vec3 Camera::getVector() {
return vector;
}