summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FreeLookCamera.cpp
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2020-06-27 18:00:48 +0100
committerGitHub <noreply@github.com>2020-06-27 18:00:48 +0100
commitb36ab8360ed17bd70ee7e1cec8db7d62a534b626 (patch)
tree4a80dcd30b11440db769ba24eb18d8ba2883f316 /Source/Core/VideoCommon/FreeLookCamera.cpp
parent1ab37990b12fd327f48786ab76daeda17feb7af2 (diff)
parentbb6582783bfefe6843a73d504690a1f1490fa9f1 (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.cpp26
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);