update_projection_matrix();
}
+void Camera::set_frustum_rotation(const Geometry::Angle<float> &r)
+{
+ rotate = r;
+ update_projection_matrix();
+}
+
void Camera::set_position(const Vector3 &p)
{
position = p;
proj_matrix = Matrix::frustum(left, right, bottom, top, clip_near, clip_far);
else
proj_matrix = Matrix::ortho(left, right, bottom, top, clip_near, clip_far);
+ proj_matrix = Matrix::rotation(rotate, Vector3(0, 0, 1))*proj_matrix;
}
void Camera::update_object_matrix()
float clip_far;
float frustum_x;
float frustum_y;
+ Geometry::Angle<float> rotate;
Vector3 position;
Vector3 look_dir;
Vector3 up_dir;
void set_aspect(float);
void set_depth_clip(float, float);
void set_frustum_axis(float, float);
+ void set_frustum_rotation(const Geometry::Angle<float> &);
const Geometry::Angle<float> &get_field_of_view() const { return fov; }
float get_aspect() const { return aspect; }
float get_near_clip() const { return clip_near; }
float get_far_clip() const { return clip_far; }
+ const Geometry::Angle<float> &get_frustum_rotation() const { return rotate; }
void set_position(const Vector3 &);
void set_look_direction(const Vector3 &);