mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-07 21:13:55 +00:00
[drape] Add FollowAndRotateRoute mode
This adds a new mode to rotate the camera towards the route while driving. This is done by looking ahead X number of seconds along the current route, up to the next turn, and calculating the angle between the current position and then. Squashed commits: [drape] Add bearing calculation via route lookahead while navigating [drape] Extract NavigationContext from OnLocationUpdate params [drape] Increase rotation animation duration during navigation [drape] Seperate route and compass rotation into two modes [drape] Reduce route lookahead maximum to 25 seconds [drape] Fix case where rotation was incorrectly considered invalid [drape] Make FollowAndRotateRoute mode only available during driving navigation [drape] Rewrite FollowedPolyline::GetLookaheadPoint [drape] Cleanup Signed-off-by: Leonardo Bishop <me@leonardobishop.net>
This commit is contained in:
committed by
Konstantin Pastbin
parent
0d01076c0f
commit
515cf98cef
@@ -261,7 +261,8 @@ private:
|
||||
using TRenderGroupRemovePredicate = std::function<bool(drape_ptr<RenderGroup> const &)>;
|
||||
void RemoveRenderGroupsLater(TRenderGroupRemovePredicate const & predicate);
|
||||
|
||||
void FollowRoute(int preferredZoomLevel, int preferredZoomLevelIn3d, bool enableAutoZoom, bool isArrowGlued);
|
||||
void FollowRoute(int preferredZoomLevel, int preferredZoomLevelIn3d, bool enableAutoZoom, bool isArrowGlued,
|
||||
bool allowRouteRotation);
|
||||
|
||||
bool CheckRouteRecaching(ref_ptr<BaseSubrouteData> subrouteData);
|
||||
|
||||
@@ -372,17 +373,20 @@ private:
|
||||
|
||||
struct FollowRouteData
|
||||
{
|
||||
FollowRouteData(int preferredZoomLevel, int preferredZoomLevelIn3d, bool enableAutoZoom, bool isArrowGlued)
|
||||
FollowRouteData(int preferredZoomLevel, int preferredZoomLevelIn3d, bool enableAutoZoom, bool isArrowGlued,
|
||||
bool allowRouteRotation)
|
||||
: m_preferredZoomLevel(preferredZoomLevel)
|
||||
, m_preferredZoomLevelIn3d(preferredZoomLevelIn3d)
|
||||
, m_enableAutoZoom(enableAutoZoom)
|
||||
, m_isArrowGlued(isArrowGlued)
|
||||
, m_allowRouteRotation(allowRouteRotation)
|
||||
{}
|
||||
|
||||
int m_preferredZoomLevel;
|
||||
int m_preferredZoomLevelIn3d;
|
||||
bool m_enableAutoZoom;
|
||||
bool m_isArrowGlued;
|
||||
bool m_allowRouteRotation;
|
||||
};
|
||||
|
||||
std::unique_ptr<FollowRouteData> m_pendingFollowRoute;
|
||||
|
||||
Reference in New Issue
Block a user