CARLA
 
载入中...
搜索中...
未找到
ActorList.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once // 确保该头文件只被包含一次
8
9#include "carla/client/detail/ActorVariant.h" // 引入 ActorVariant 类定义
10
11#include <boost/iterator/transform_iterator.hpp> // 引入 Boost 库中的 transform_iterator,用于创建变换迭代器
12
13#include <vector> // 引入标准库中的 vector 容器,存储参与者数据
14
15namespace carla { // 开始 carla 命名空间
16namespace client { // 开始 client 命名空间
17 // ActorList 类定义,表示一个包含多个参与者(Actors)的列表。
18 // 支持 shared_from_this 以便对象能方便地管理生命周期。
19 class ActorList : public EnableSharedFromThis<ActorList> { // 定义 ActorList 类,支持 shared_from_this
20 private:
21
22 // 创建变换迭代器,将元素从 ActorVariant 转换为 Actor
23 template <typename It>
24 auto MakeIterator(It it) const {
25 return boost::make_transform_iterator(it, [this](auto &v) { // 使用 Boost 库的变换迭代器
26 return v.Get(_episode); // 获取 Actor 对象,基于当前的 episode
27 });
28 }
29
30 public:
31
32 /// 根据指定的 actor_id 查找对应的参与者(Actor)。
33 SharedPtr<Actor> Find(ActorId actor_id) const; // 查找指定 id 的参与者
34
35 /// 根据提供的通配符模式(wildcard_pattern)过滤符合条件的参与者列表。
36 SharedPtr<ActorList> Filter(const std::string &wildcard_pattern) const; // 根据通配符模式过滤参与者列表
37
38 /// 重载 [] 运算符,返回指定位置的参与者(Actor)。
39 SharedPtr<Actor> operator[](size_t pos) const {
40 return _actors[pos].Get(_episode); // 获取指定位置的 Actor
41 }
42 /// 提供 at() 函数用于安全访问指定位置的参与者,支持边界检查。
43 SharedPtr<Actor> at(size_t pos) const { // 提供 at() 函数以安全访问元素
44 return _actors.at(pos).Get(_episode); // 获取指定位置的 Actor,并进行边界检查
45 }
46
47 /// 返回指向列表中第一个元素的迭代器。
48 auto begin() const {
49 return MakeIterator(_actors.begin()); // 创建并返回开始迭代器
50 }
51
52 /// 返回指向列表中最后一个元素后一个位置的迭代器。
53 auto end() const { // 返回迭代器的结束位置
54 return MakeIterator(_actors.end()); // 创建并返回结束迭代器
55 }
56
57 /// 检查列表是否为空。
58 bool empty() const {
59 return _actors.empty(); // 返回列表是否为空
60 }
61
62 /// 返回列表中包含的参与者数量。
63 size_t size() const {
64 return _actors.size(); // 返回参与者数量
65 }
66
67 private:
68
69 friend class World; // 声明 World 类为 ActorList 的友元类
70
71 // 构造函数,接受 EpisodeProxy 和包含多个 ActorVariant 对象的 vector。
72 ActorList(detail::EpisodeProxy episode, std::vector<rpc::Actor> actors);
73
74 detail::EpisodeProxy _episode; // 存储 EpisodeProxy 对象,表示当前的场景或回合
75
76 std::vector<detail::ActorVariant> _actors; // 存储 ActorVariant 对象的向量,表示多个参与者
77 };
78
79} // namespace client
80} // namespace carla
81
SharedPtr< Actor > at(size_t pos) const
提供 at() 函数用于安全访问指定位置的参与者,支持边界检查。
Definition ActorList.h:43
std::vector< detail::ActorVariant > _actors
Definition ActorList.h:76
auto begin() const
返回指向列表中第一个元素的迭代器。
Definition ActorList.h:48
auto MakeIterator(It it) const
Definition ActorList.h:24
SharedPtr< Actor > operator[](size_t pos) const
重载 [] 运算符,返回指定位置的参与者(Actor)。
Definition ActorList.h:39
SharedPtr< ActorList > Filter(const std::string &wildcard_pattern) const
根据提供的通配符模式(wildcard_pattern)过滤符合条件的参与者列表。
Definition ActorList.cpp:32
auto end() const
返回指向列表中最后一个元素后一个位置的迭代器。
Definition ActorList.h:53
detail::EpisodeProxy _episode
Definition ActorList.h:74
SharedPtr< Actor > Find(ActorId actor_id) const
根据指定的 actor_id 查找对应的参与者(Actor)。
Definition ActorList.cpp:23
size_t size() const
返回列表中包含的参与者数量。
Definition ActorList.h:63
bool empty() const
检查列表是否为空。
Definition ActorList.h:58
ActorList(detail::EpisodeProxy episode, std::vector< rpc::Actor > actors)
Definition ActorList.cpp:17
carla::ActorId ActorId
参与者的智能指针类型
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19
包含CARLA客户端相关类和函数的命名空间。