get height, camera + cow movement with keys
[demo] / src / camera.cc
index 0f7773e..b3ad077 100644 (file)
@@ -20,7 +20,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 +30,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));
@@ -50,9 +51,16 @@ Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f)
        Mat4 pmat = Mat4(
                        tmp/aspect,     0,              0,                                      0,
                        0,                              tmp,    0,                                      0,
-                       0,                              0,              (f + n) / range,        -1,
+                       0,                              0,      (f + n) / range,        -1,
                        0,                              0,              2 * n * f / range,      0
                    );
 
        return pmat;
+}
+
+void OrbitCamera::set_position(float x, float y, float z)
+{
+       position.x = x;
+       position.y = y;
+       position.z = z;
 }
\ No newline at end of file