7namespace traffic_manager {
15 const std::vector<SimpleWaypointPtr> waypoints) {
19 std::unordered_set<GeoGridId> current_grids;
21 for (
auto &waypoint : waypoints) {
25 GeoGridId ggid = waypoint->GetGeodesicGridId();
27 current_grids.insert(ggid);
33 if (actor_ids.find(actor_id) == actor_ids.end()) {
34 actor_ids.insert(actor_id);
47 if (!buffer.empty()) {
51 std::unordered_set<GeoGridId> ¤t_grids =
actor_to_grids.at(actor_id);
53 for (
auto &grid_id : current_grids) {
59 actor_ids.erase(actor_id);
67 std::unordered_set<GeoGridId> current_grids;
68 uint64_t buffer_size = buffer.size();
70 for (uint64_t i = 0u; i <= buffer_size - 1u; ++i) {
71 auto waypoint = buffer.at(i);
72 GeoGridId ggid = waypoint->GetGeodesicGridId();
73 current_grids.insert(ggid);
81 if (actor_ids.find(actor_id) == actor_ids.end()) {
82 actor_ids.insert(actor_id);
119 const std::unordered_set<GeoGridId> &grid_ids =
actor_to_grids.at(actor_id);
121 for (
auto &grid_id : grid_ids) {
127 actor_id_set.insert(actor_ids.begin(), actor_ids.end());
138 std::unordered_set<GeoGridId> &grid_ids =
actor_to_grids.at(actor_id);
140 for (
auto &grid_id : grid_ids) {
146 actor_ids.erase(actor_id);
156 for (
const uint64_t &waypoint_id : waypoint_id_set) {
169 if (actor_id_set.find(actor_id) == actor_id_set.end()) {
170 actor_id_set.insert(actor_id);
181 if (waypoint_id_set.find(waypoint_id) == waypoint_id_set.end()) {
182 waypoint_id_set.insert(waypoint_id);
194 actor_id_set.erase(actor_id);
196 if (actor_id_set.size() == 0) {
203 waypoint_id_set.erase(waypoint_id);
205 if (waypoint_id_set.size() == 0) {
void UpdatePassingVehicle(uint64_t waypoint_id, ActorId actor_id)
更新、移除和检索经过某一路点车辆的方法
cg::Location GetHeroLocation() const
std::unordered_map< ActorId, std::unordered_set< GeoGridId > > actor_to_grids
参与者路径所占据的测地线网格
WaypointOverlap waypoint_overlap_tracker
void UpdateGridPosition(const ActorId actor_id, const Buffer &buffer)
ActorIdSet GetPassingVehicles(uint64_t waypoint_id) const
cg::Location hero_location
当前英雄位置
ActorIdSet GetOverlappingVehicles(ActorId actor_id) const
bool IsGeoGridFree(const GeoGridId geogrid_id) const
std::unordered_set< uint64_t > WaypointIdSet
用于跟踪车辆所占用航点的结构
void UpdateUnregisteredGridPosition(const ActorId actor_id, const std::vector< SimpleWaypointPtr > waypoints)
void RemovePassingVehicle(uint64_t waypoint_id, ActorId actor_id)
void DeleteActor(ActorId actor_id)
从跟踪中删除参与者数据的方法
WaypointOccupancyMap waypoint_occupied
void AddTakenGrid(const GeoGridId geogrid_id, const ActorId actor_id)
void SetHeroLocation(const cg::Location location)
std::unordered_map< GeoGridId, ActorIdSet > grid_to_actors
参与者当前经过的网格
static const uint64_t BUFFER_STEP_THROUGH
static const float INV_BUFFER_STEP_THROUGH
std::deque< std::shared_ptr< SimpleWaypoint > > Buffer
carla::ActorId ActorId
参与者的智能指针类型
std::unordered_set< ActorId > ActorIdSet