From b018dfb8f462e9e21560aaa06e24473b1ba47052 Mon Sep 17 00:00:00 2001 From: LuisPoveda Date: Mon, 13 Feb 2023 10:47:58 +0100 Subject: [PATCH] Added filter by attribute for array attributes --- .../source/carla/client/BlueprintLibrary.cpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/LibCarla/source/carla/client/BlueprintLibrary.cpp b/LibCarla/source/carla/client/BlueprintLibrary.cpp index 343da6d76..778b2ae95 100644 --- a/LibCarla/source/carla/client/BlueprintLibrary.cpp +++ b/LibCarla/source/carla/client/BlueprintLibrary.cpp @@ -36,14 +36,30 @@ namespace client { SharedPtr BlueprintLibrary::FilterByAttribute( const std::string &name, const std::string& value) const { map_type result; + for (auto &pair : _blueprints) { if (!pair.second.ContainsAttribute(name)) continue; const ActorAttribute &Attribute = pair.second.GetAttribute(name); - const std::string &AttributeValue = Attribute.GetValue(); - if (value == AttributeValue) { - result.emplace(pair); + const std::vector &Values = Attribute.GetRecommendedValues(); + if (Values.empty()) + { + const std::string &AttributeValue = Attribute.GetValue(); + if (value == AttributeValue) + result.emplace(pair); } + else + { + for (const std::string &Value : Values) + { + if (Value == value) + { + result.emplace(pair); + break; + } + } + } + } return SharedPtr{new BlueprintLibrary(result)}; }