From 071e066e8d3e55dea480292ca73953bfd71b9568 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 14 Mar 2026 03:11:38 +0000 Subject: [PATCH] Lower 3rd-to-1st person camera switch distance to 0.5 Separate the switch-to-first-person threshold from the default starting distance so the camera can zoom in closer before transitioning. Both mouse and touch inputs use the same new SWITCH_TO_FIRST_PERSON_DISTANCE constant (0.5f), while MIN_DISTANCE (1.5f) remains as the default orbit distance when activating 3rd person mode. https://claude.ai/code/session_01KJ8KHH4XWx7F5VxhSNGo7M --- extensions/include/extensions/thirdpersoncamera/orbitcamera.h | 1 + extensions/src/thirdpersoncamera/inputhandler.cpp | 4 ++-- extensions/src/thirdpersoncamera/orbitcamera.cpp | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/extensions/include/extensions/thirdpersoncamera/orbitcamera.h b/extensions/include/extensions/thirdpersoncamera/orbitcamera.h index 65ac97c3..e60b1351 100644 --- a/extensions/include/extensions/thirdpersoncamera/orbitcamera.h +++ b/extensions/include/extensions/thirdpersoncamera/orbitcamera.h @@ -54,6 +54,7 @@ class OrbitCamera { static constexpr float MIN_PITCH = 0.05f; static constexpr float MAX_PITCH = 1.4f; static constexpr float MIN_DISTANCE = 1.5f; + static constexpr float SWITCH_TO_FIRST_PERSON_DISTANCE = 0.5f; static constexpr float MAX_DISTANCE = 15.0f; private: diff --git a/extensions/src/thirdpersoncamera/inputhandler.cpp b/extensions/src/thirdpersoncamera/inputhandler.cpp index 2a6fbbc9..2c87c000 100644 --- a/extensions/src/thirdpersoncamera/inputhandler.cpp +++ b/extensions/src/thirdpersoncamera/inputhandler.cpp @@ -91,7 +91,7 @@ void InputHandler::HandleSDLEvent(SDL_Event* p_event, OrbitCamera& p_orbit, bool } break; } - if (p_orbit.GetOrbitDistance() <= OrbitCamera::MIN_DISTANCE && p_event->wheel.y > 0) { + if (p_orbit.GetOrbitDistance() <= OrbitCamera::SWITCH_TO_FIRST_PERSON_DISTANCE && p_event->wheel.y > 0) { m_wantsAutoDisable = true; break; } @@ -215,7 +215,7 @@ void InputHandler::HandleSDLEvent(SDL_Event* p_event, OrbitCamera& p_orbit, bool break; } - if (p_orbit.GetOrbitDistance() <= OrbitCamera::MIN_DISTANCE) { + if (p_orbit.GetOrbitDistance() <= OrbitCamera::SWITCH_TO_FIRST_PERSON_DISTANCE) { float totalDelta = newDist - m_touch.gesturePinchDist; if (totalDelta > PINCH_TRANSITION_THRESHOLD) { m_wantsAutoDisable = true; diff --git a/extensions/src/thirdpersoncamera/orbitcamera.cpp b/extensions/src/thirdpersoncamera/orbitcamera.cpp index bc85815b..80cdc75e 100644 --- a/extensions/src/thirdpersoncamera/orbitcamera.cpp +++ b/extensions/src/thirdpersoncamera/orbitcamera.cpp @@ -117,8 +117,8 @@ void OrbitCamera::ClampPitch() void OrbitCamera::ClampDistance() { - if (m_orbitDistance < MIN_DISTANCE) { - m_orbitDistance = MIN_DISTANCE; + if (m_orbitDistance < SWITCH_TO_FIRST_PERSON_DISTANCE) { + m_orbitDistance = SWITCH_TO_FIRST_PERSON_DISTANCE; } if (m_orbitDistance > MAX_DISTANCE) { m_orbitDistance = MAX_DISTANCE;