+ Vector4 columns[4];
+ columns[0] = compose(right_dir, 0.0f);
+ columns[1] = compose(cross(right_dir, look_dir), 0.0f);
+ columns[2] = compose(-look_dir, 0.0f);
+ columns[3] = compose(position, 1.0f);
+ matrix = Matrix::from_columns(columns);
+ view_matrix = invert(matrix);
+}
+
+
+Camera::Loader::Loader(Camera &c):
+ DataFile::ObjectLoader<Camera>(c)
+{
+ add("aspect_ratio", &Loader::aspect_ratio);
+ add("depth_clip", &Loader::depth_clip);
+ add("field_of_view", &Loader::field_of_view);
+ add("look_at", &Loader::look_at);
+ add("look_direction", &Loader::look_direction);
+ add("orthographic", &Loader::orthographic);
+ add("position", &Loader::position);
+ add("up_direction", &Loader::up_direction);
+}
+
+void Camera::Loader::aspect_ratio(float a)
+{
+ obj.set_aspect_ratio(a);
+}
+
+void Camera::Loader::depth_clip(float n, float f)
+{
+ obj.set_depth_clip(n, f);
+}