diff --git a/shared/src/map/camera/MapCamera3d.cpp b/shared/src/map/camera/MapCamera3d.cpp index 0e5152374..3df8e45e3 100644 --- a/shared/src/map/camera/MapCamera3d.cpp +++ b/shared/src/map/camera/MapCamera3d.cpp @@ -1817,17 +1817,25 @@ void MapCamera3d::updateZoom(double zoom_) { std::lock_guard lock(paramMutex); zoom = std::clamp(zoom_, zoomMax, zoomMin); - cameraVerticalDisplacement = getCameraVerticalDisplacement(); - cameraPitch = getCameraPitch(); + cameraVerticalDisplacement = getCameraVerticalDisplacementUnlocked(); + cameraPitch = getCameraPitchUnlocked(); } double MapCamera3d::getCameraVerticalDisplacement() { std::lock_guard lock(paramMutex); + return getCameraVerticalDisplacementUnlocked(); +} + +double MapCamera3d::getCameraVerticalDisplacementUnlocked() { return valueForZoom(cameraZoomConfig.verticalDisplacementInterpolationValues, zoom); } double MapCamera3d::getCameraPitch() { std::lock_guard lock(paramMutex); + return getCameraPitchUnlocked(); +} + +double MapCamera3d::getCameraPitchUnlocked() { return valueForZoom(cameraZoomConfig.pitchInterpolationValues, zoom); } diff --git a/shared/src/map/camera/MapCamera3d.h b/shared/src/map/camera/MapCamera3d.h index 3a9b39717..4c982e9cd 100644 --- a/shared/src/map/camera/MapCamera3d.h +++ b/shared/src/map/camera/MapCamera3d.h @@ -195,6 +195,11 @@ class MapCamera3d : public MapCameraInterface, double getCameraVerticalDisplacement(); double getCameraPitch(); + private: + // Unlocked versions - caller must hold paramMutex + double getCameraVerticalDisplacementUnlocked(); + double getCameraPitchUnlocked(); + Vec2F calculateDistance(double latTopLeft, double lonTopLeft, double latBottomRight, double lonBottomRight); double haversineDistance(double lat1, double lon1, double lat2, double lon2); double zoomForMeterWidth(Vec2I sizeViewport, Vec2F sizeMeters); @@ -213,7 +218,6 @@ class MapCamera3d : public MapCameraInterface, Coord focusPointPosition; double cameraVerticalDisplacement = 0.0; double cameraPitch = 0; // looking up or down - double fieldOfView = 10.0f; double zoom; double angle = 0;