]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/camera.h
Use default member initializers for simple types
[libs/gl.git] / source / render / camera.h
index b10ccb93e200ceaadbe62e8498c7cb69e427409a..0dd599298b3baed315f6d647cd932150feaa2511 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <msp/datafile/objectloader.h>
 #include "placeable.h"
+#include "programdata.h"
 
 namespace Msp {
 namespace GL {
@@ -27,20 +28,21 @@ public:
        };
 
 private:
-       Geometry::Angle<float> fov;
-       float height;
-       float aspect;
+       Geometry::Angle<float> fov = Geometry::Angle<float>::from_turns(0.125f);
+       float height = 0.0f;
+       float aspect = 4.0f/3.0f;
        // Some compilers have "near" and "far" keywords
-       float clip_near;
-       float clip_far;
-       float frustum_x;
-       float frustum_y;
+       float clip_near = 0.1f;
+       float clip_far = 10.0f;
+       float frustum_x = 0.0f;
+       float frustum_y = 0.0f;
        Geometry::Angle<float> rotate;
-       Vector3 position;
-       Vector3 look_dir;
-       Vector3 up_dir;
+       Vector3 position = { 0.0f, 0.0f, 0.0f };
+       Vector3 look_dir = { 0.0f, 0.0f, -1.0f };
+       Vector3 up_dir = { 0.0f, 1.0f, 0.0f };
        Matrix view_matrix;
        Matrix proj_matrix;
+       ProgramData shdata;
 
 public:
        Camera();
@@ -89,9 +91,14 @@ public:
        Vector4 unproject(const Vector4 &) const;
        Vector3 unproject(const Vector3 &) const;
 
+       const ProgramData &get_shader_data() const { return shdata; }
+
 private:
        void update_projection_matrix();
        void update_object_matrix();
+
+public:
+       void set_debug_name(const std::string &);
 };
 
 } // namespace GL