#include "Camera.h" #include "Math/Matrix.h" #include "GL/glfw.h" namespace BlueCore { Camera::Camera() : _LookAt (false), _FoV(45.0), _NearPlane(1.0), _FarPlane(15000.0) { } Camera::~Camera() { } void Camera::setFoV(Scalar fov) { _FoV = fov; } void Camera::setNearPlane(Scalar near) { _NearPlane = near; } void Camera::setFarPlane(Scalar far) { _FarPlane = far; } void Camera::setPosition(const Vector3& position) { _Position = position; if (_LookAt) updateLookAtRotation(); } const Vector3& Camera::getPosition() { return _Position; } void Camera::setRotation(const Quaternion& rotation) { _Rotation = rotation; } const Quaternion& Camera::getRotation() { return _Rotation; } Scalar Camera::getNearPlane() const { return _NearPlane; } Scalar Camera::getFarPlane() const { return _FarPlane; } Scalar Camera::getFov() const { return _FoV; } void Camera::lookAt(const Vector3 &point) { _LookAt = true; _LookAtPoint = point; _LookAtUp = Vector3(0.0, 1.0, 0.0); updateLookAtRotation(); } void Camera::updateLookAtRotation() { Matrix3x3 m (_LookAtPoint - _Position, _LookAtUp); _Rotation = m.toQuaternion().inversed(); } } // namespace BlueCore