From fab4a132e12126d32845e0b9f49fd47e37eaff4f Mon Sep 17 00:00:00 2001 From: Ralph Sennhauser Date: Sat, 13 Jun 2026 14:15:11 +0200 Subject: [PATCH] Fix camera reset under bird view in Atlas Resetting camera while in bird view should reset birdview flag. Fixes: 9388692a4717f0ecccfb2e37aedddb779042dae2 Signed-off-by: Ralph Sennhauser --- .../GameInterface/Handlers/CameraCtrlHandlers.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp b/source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp index 31293a4d76..3900fcb342 100644 --- a/source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp +++ b/source/tools/atlas/GameInterface/Handlers/CameraCtrlHandlers.cpp @@ -37,6 +37,11 @@ #include "tools/atlas/GameInterface/SharedTypes.h" #include "tools/atlas/GameInterface/View.h" +namespace +{ +bool g_BirdEyeView{false}; +} // namespace + namespace AtlasMessage { MESSAGEHANDLER(CameraReset) @@ -60,6 +65,8 @@ MESSAGEHANDLER(CameraReset) } g_Game->GetView()->ResetCameraTarget(target); + + g_BirdEyeView = false; } MESSAGEHANDLER(ScrollConstant) @@ -263,14 +270,13 @@ MESSAGEHANDLER(ToggleBirdsEyeView) if (!g_Game || g_Game->GetView()->GetCinema()->IsPlaying()) return; - static bool birdEyeView{false}; static float declination{0.f}; CCamera& camera = AtlasView::GetView_Game()->GetCamera(); CMatrix3D& orientation = camera.GetOrientation(); CVector3D focus = camera.GetFocus(); - if (!birdEyeView) + if (!g_BirdEyeView) { CVector3D in = orientation.GetIn(); declination = atan2(sqrt(in.X*in.X + in.Z*in.Z), in.Y) - std::numbers::pi_v / 2.f; @@ -279,7 +285,7 @@ MESSAGEHANDLER(ToggleBirdsEyeView) CQuaternion q; // If really 90° then the camera movement bugs out as it has no clear // forward anymore, so stick with 89°. - q.FromAxisAngle(orientation.GetLeft(), birdEyeView ? + q.FromAxisAngle(orientation.GetLeft(), g_BirdEyeView ? DEGTORAD(89.f) - declination : DEGTORAD(-89.f) + declination); CVector3D origin = orientation.GetTranslation(); @@ -293,7 +299,7 @@ MESSAGEHANDLER(ToggleBirdsEyeView) camera.UpdateFrustum(); - birdEyeView = !birdEyeView; + g_BirdEyeView = !g_BirdEyeView; } }