summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FreeLookCamera.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2020-05-18 17:22:41 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2020-06-25 13:34:42 -0500
commit3d7d4dfc8aac4bf361519e84dd0c173ab25c0f12 (patch)
treeea5cfcd576ea2a21cb0f7a198c07cca0715f0d52 /Source/Core/VideoCommon/FreeLookCamera.cpp
parent98de22a1e629495f386764defd80cb90135cd371 (diff)
VideoCommon: Use freelook field of view to change the perspective of the camera
Diffstat (limited to 'Source/Core/VideoCommon/FreeLookCamera.cpp')
-rw-r--r--Source/Core/VideoCommon/FreeLookCamera.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/FreeLookCamera.cpp b/Source/Core/VideoCommon/FreeLookCamera.cpp
index 4e49496dfd..7c2647ba2e 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,23 @@ 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, 0.1f, m_fov_x);
+}
+
+void FreeLookCamera::IncreaseFovY(float fov)
+{
+ m_fov_y += fov;
+ m_fov_y = std::clamp(m_fov_y, 0.1f, m_fov_y);
+}
+
void FreeLookCamera::Reset()
{
m_camera_controller->Reset();
+ m_fov_x = 1.0f;
+ m_fov_y = 1.0f;
m_dirty = true;
}
@@ -239,6 +258,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);