diff options
| author | Tilka <tilkax@gmail.com> | 2020-06-27 18:00:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-27 18:00:48 +0100 |
| commit | b36ab8360ed17bd70ee7e1cec8db7d62a534b626 (patch) | |
| tree | 4a80dcd30b11440db769ba24eb18d8ba2883f316 /Source/Core/VideoCommon/FreeLookCamera.cpp | |
| parent | 1ab37990b12fd327f48786ab76daeda17feb7af2 (diff) | |
| parent | bb6582783bfefe6843a73d504690a1f1490fa9f1 (diff) | |
Merge pull request #8820 from iwubcode/freelook_field_of_view
Core / VideoCommon / DolphinQt - allow tweaking freelook camera's field of view
Diffstat (limited to 'Source/Core/VideoCommon/FreeLookCamera.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/FreeLookCamera.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/FreeLookCamera.cpp b/Source/Core/VideoCommon/FreeLookCamera.cpp index 4e49496dfd..3c04962c4e 100644 --- a/Source/Core/VideoCommon/FreeLookCamera.cpp +++ b/Source/Core/VideoCommon/FreeLookCamera.cpp @@ -204,6 +204,11 @@ Common::Matrix44 FreeLookCamera::GetView() return m_camera_controller->GetView(); } +Common::Vec2 FreeLookCamera::GetFieldOfView() const +{ + return Common::Vec2{m_fov_x, m_fov_y}; +} + void FreeLookCamera::MoveVertical(float amt) { m_camera_controller->MoveVertical(amt); @@ -228,9 +233,28 @@ void FreeLookCamera::Rotate(const Common::Vec3& amt) m_dirty = true; } +void FreeLookCamera::IncreaseFovX(float fov) +{ + m_fov_x += fov; + m_fov_x = std::clamp(m_fov_x, m_fov_step_size, m_fov_x); +} + +void FreeLookCamera::IncreaseFovY(float fov) +{ + m_fov_y += fov; + m_fov_y = std::clamp(m_fov_y, m_fov_step_size, m_fov_y); +} + +float FreeLookCamera::GetFovStepSize() const +{ + return m_fov_step_size; +} + void FreeLookCamera::Reset() { m_camera_controller->Reset(); + m_fov_x = 1.0f; + m_fov_y = 1.0f; m_dirty = true; } @@ -239,6 +263,8 @@ void FreeLookCamera::DoState(PointerWrap& p) if (p.mode == PointerWrap::MODE_WRITE || p.mode == PointerWrap::MODE_MEASURE) { p.Do(m_current_type); + p.Do(m_fov_x); + p.Do(m_fov_y); if (m_camera_controller) { m_camera_controller->DoState(p); |
