diff --git a/include/engine/datafacade/contiguous_internalmem_datafacade.hpp b/include/engine/datafacade/contiguous_internalmem_datafacade.hpp index ec404e71f..8ae26c6d5 100644 --- a/include/engine/datafacade/contiguous_internalmem_datafacade.hpp +++ b/include/engine/datafacade/contiguous_internalmem_datafacade.hpp @@ -883,6 +883,11 @@ class ContiguousInternalMemoryDataFacadeBase : public BaseDataFacade m_lane_description_masks.begin() + m_lane_description_offsets[lane_description_id + 1]); } + + bool IsLeftHandDriving() const override final + { + return m_profile_properties->left_hand_driving; + } }; template class ContiguousInternalMemoryDataFacade; diff --git a/include/engine/datafacade/datafacade_base.hpp b/include/engine/datafacade/datafacade_base.hpp index 9a3fe2919..d1fe8d968 100644 --- a/include/engine/datafacade/datafacade_base.hpp +++ b/include/engine/datafacade/datafacade_base.hpp @@ -172,6 +172,8 @@ class BaseDataFacade virtual EntryClassID GetEntryClassID(const EdgeID eid) const = 0; virtual util::guidance::EntryClass GetEntryClass(const EntryClassID entry_class_id) const = 0; + + virtual bool IsLeftHandDriving() const = 0; }; } } diff --git a/include/engine/geospatial_query.hpp b/include/engine/geospatial_query.hpp index d4b8da47c..2873dde6c 100644 --- a/include/engine/geospatial_query.hpp +++ b/include/engine/geospatial_query.hpp @@ -237,10 +237,8 @@ template class GeospatialQuery bool input_coordinate_is_at_right = !util::coordinate_calculation::isCCW( coordinates[segment.data.u], coordinates[segment.data.v], input_coordinate); - // TODO Check the country approach, for the moment right is the default country - // approach. - // if drive left - // input_coordinate_is_at_right = !input_coordinate_is_at_right + if(datafacade.IsLeftHandDriving()) + input_coordinate_is_at_right = !input_coordinate_is_at_right; // Apply the approach. use_directions.first = use_directions.first && input_coordinate_is_at_right; diff --git a/include/engine/plugins/plugin_base.hpp b/include/engine/plugins/plugin_base.hpp index 6587a5f22..5605926ad 100644 --- a/include/engine/plugins/plugin_base.hpp +++ b/include/engine/plugins/plugin_base.hpp @@ -232,8 +232,6 @@ class BasePlugin for (const auto i : util::irange(0UL, parameters.coordinates.size())) { Approach approach = engine::Approach::UNRESTRICTED; - // TODO init at SIDE for test - // SideValue side = engine::SideValue::DEFAULT; if (use_approaches && parameters.approaches[i]) approach = parameters.approaches[i].get(); diff --git a/unit_tests/mocks/mock_datafacade.hpp b/unit_tests/mocks/mock_datafacade.hpp index ed21e02c0..5402c1f56 100644 --- a/unit_tests/mocks/mock_datafacade.hpp +++ b/unit_tests/mocks/mock_datafacade.hpp @@ -197,6 +197,7 @@ class MockBaseDataFacade : public engine::datafacade::BaseDataFacade double GetWeightMultiplier() const override final { return 10.; } BearingClassID GetBearingClassID(const NodeID /*id*/) const override { return 0; } EntryClassID GetEntryClassID(const EdgeID /*id*/) const override { return 0; } + bool IsLeftHandDriving() const override { return false; } util::guidance::TurnBearing PreTurnBearing(const EdgeID /*eid*/) const override final {