X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fcamera.cc;h=7de5501522150422bc1a60cdede46c6218c723f5;hb=HEAD;hp=fd96f785e83140884c67edcdcf73fd013ecddcb3;hpb=df336012c33f2993bdb80177a1f874ef81e7505f;p=demo diff --git a/src/camera.cc b/src/camera.cc index fd96f78..7de5501 100644 --- a/src/camera.cc +++ b/src/camera.cc @@ -3,16 +3,10 @@ #include #include "camera.h" -#include "state_manager.h" Camera::Camera() {} Camera::~Camera() {} -void Camera::use() const -{ - state_manager.set_state("st_view_matrix", get_view_matrix()); -} - OrbitCamera::OrbitCamera() { phi = theta = distance = 0; @@ -20,7 +14,7 @@ OrbitCamera::OrbitCamera() OrbitCamera::~OrbitCamera() {} -void OrbitCamera::set_orbit_params(float phi, float theta, float distance) +void OrbitCamera::set_orbit_params(float theta, float phi, float distance) { this->phi = phi; this->theta = theta; @@ -30,6 +24,7 @@ void OrbitCamera::set_orbit_params(float phi, float theta, float distance) Mat4 OrbitCamera::get_view_matrix() const { Mat4 view_matrix; + view_matrix.translation(-position); view_matrix.rotate_y(theta * (float)M_PI / 180); view_matrix.rotate_x(phi * (float)M_PI / 180); view_matrix.translate(Vec3(0, 0, -distance)); @@ -55,4 +50,11 @@ Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f) ); return pmat; -} \ No newline at end of file +} + +void OrbitCamera::set_position(float x, float y, float z) +{ + position.x = x; + position.y = y; + position.z = z; +}