/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include "GetNamedPoseBoundsServiceHandler.h" #include #include #include #include #include #include namespace ROS2SimulationInterfaces { AZStd::unordered_set GetNamedPoseBoundsServiceHandler::GetProvidedFeatures() { return AZStd::unordered_set{ SimulationFeatures::POSE_BOUNDS }; } AZStd::optional GetNamedPoseBoundsServiceHandler::HandleServiceRequest( const std::shared_ptr header, const Request& request) { using namespace SimulationInterfaces; AZ::Outcome namedPoseBoundsO3DE; Response response; if (request.name.empty()) { response.result.result = simulation_interfaces::msg::Result::RESULT_OPERATION_FAILED; response.result.error_message = "Passing empty name is forbidden"; return response; } NamedPoseManagerRequestBus::BroadcastResult( namedPoseBoundsO3DE, &NamedPoseManagerRequests::GetNamedPoseBounds, AZStd::string{ request.name.c_str() }); if (!namedPoseBoundsO3DE.IsSuccess()) { response.result.result = namedPoseBoundsO3DE.GetError().m_errorCode; response.result.error_message = namedPoseBoundsO3DE.GetError().m_errorString.c_str(); } else { response.result.result = simulation_interfaces::msg::Result::RESULT_OK; response.bounds.type = namedPoseBoundsO3DE.GetValue().m_boundsType; for (const auto& point : namedPoseBoundsO3DE.GetValue().m_points) { response.bounds.points.emplace_back(ROS2::ROS2Conversions::ToROS2Vector3(point)); } } return response; } } // namespace ROS2SimulationInterfaces