]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/camera.cpp
Convert components to buffered where appropriate
[libs/game.git] / source / game / camera.cpp
index 37c0f4db466e62610dc0d3ec7930705ec7fc8207..02880cec8d3a223691f785b02aa183ec96f77c3c 100644 (file)
@@ -5,32 +5,36 @@ using namespace std;
 namespace Msp::Game {
 
 Camera::Camera(Handle<Entity> e, const CameraSetup &s):
-       Component(e),
-       setup(s),
-       fov_y(setup.field_of_view_y),
-       size(setup.size),
-       near_clip(setup.near_clip),
-       far_clip(setup.far_clip)
+       BufferedComponent<CameraData>(e),
+       setup(s)
 {
-       if(!is_orthographic())
-               size = { get_aspect(), 1.0f };
+       CameraData &d = write();
+       d.fov_y = setup.field_of_view_y;
+       d.size = setup.size;
+       d.near_clip = setup.near_clip;
+       d.far_clip = setup.far_clip;
+
+       if(!d.is_orthographic())
+               d.size = { d.get_aspect(), 1.0f };
 }
 
 void Camera::set_field_of_view(Geometry::Angle<float> f, float a)
 {
-       if(is_orthographic())
+       Data &d = write();
+       if(d.is_orthographic())
                throw logic_error("Camera is not perspective");
 
-       fov_y = f;
-       size = { a, 1.0f };
+       d.fov_y = f;
+       d.size = { a, 1.0f };
 }
 
 void Camera::set_size(const LinAl::Vector<float, 2> &s)
 {
-       if(!is_orthographic())
+       Data &d = write();
+       if(!d.is_orthographic())
                throw logic_error("Camera is not orthographic");
 
-       size = s;
+       d.size = s;
 }
 
 } // namespace Msp::Game