From ad08dba53bc01f3223bd06fb21f9b0fe355a2fba Mon Sep 17 00:00:00 2001 From: Patryk Antosz Date: Mon, 22 Sep 2025 13:00:06 +0200 Subject: [PATCH] Added the InitialPoseRestorationPolicy to the Registry Signed-off-by: Patryk Antosz --- .../Code/Source/Clients/ROS2PoseControl.cpp | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Gems/ROS2PoseControl/Code/Source/Clients/ROS2PoseControl.cpp b/Gems/ROS2PoseControl/Code/Source/Clients/ROS2PoseControl.cpp index abc7bee6..50afa95c 100644 --- a/Gems/ROS2PoseControl/Code/Source/Clients/ROS2PoseControl.cpp +++ b/Gems/ROS2PoseControl/Code/Source/Clients/ROS2PoseControl.cpp @@ -31,6 +31,32 @@ namespace ROS2PoseControl { + constexpr AZStd::string_view PoseRestorationPolicyKey = "/O3DE/ROS2PoseControl/InitialPoseRestoratonPolicy"; + + namespace + { + InitialPoseRestorationPolicy ConvertStringToPolicy(AZStd::string& policy) + { + AZStd::transform( + policy.begin(), + policy.end(), + policy.begin(), + [](char c) + { + return AZStd::tolower(c); + }); + if (policy == "never") + { + return InitialPoseRestorationPolicy::Never; + } + else if (policy == "everytime") + { + return InitialPoseRestorationPolicy::Everytime; + } + return InitialPoseRestorationPolicy::Once; + } + } // namespace + ROS2PoseControl::ROS2PoseControl() { m_configuration.m_poseTopicConfiguration.m_topic = "goal_pose"; @@ -46,10 +72,17 @@ namespace ROS2PoseControl void ROS2PoseControl::Activate() { + auto registry = AZ::SettingsRegistry::Get(); + AZ_Assert(registry, "ROS2PoseControl registry is not available."); + AZStd::string policy; + if (registry && registry->Get(policy, PoseRestorationPolicyKey)) + { + m_configuration.m_initialPoseRestorationPolicy = ConvertStringToPolicy(policy); + } + InitializeROSConnection(); ImGui::ImGuiUpdateListenerBus::Handler::BusConnect(); ROS2PoseControlRequestsBus::Handler::BusConnect(GetEntityId()); - AZ::TickBus::QueueFunction( [this]() {