X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fcamera.cpp;h=02880cec8d3a223691f785b02aa183ec96f77c3c;hb=bfbcfa2678c70d661cb9104b2ef677d7d7b5a637;hp=37c0f4db466e62610dc0d3ec7930705ec7fc8207;hpb=a99b57a74252fd3de649d544d070b747f91fcf4d;p=libs%2Fgame.git diff --git a/source/game/camera.cpp b/source/game/camera.cpp index 37c0f4d..02880ce 100644 --- a/source/game/camera.cpp +++ b/source/game/camera.cpp @@ -5,32 +5,36 @@ using namespace std; namespace Msp::Game { Camera::Camera(Handle 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(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 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 &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