CARLA
 
载入中...
搜索中...
未找到
CarlaRecorderCollision.cpp
浏览该文件的文档.
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#include "CarlaRecorder.h"
10// 从输入流中读取碰撞数据
11void CarlaRecorderCollision::Read(std::istream &InFile)
12{
13 // id
14 ReadValue<uint32_t>(InFile, this->Id);
15 // actors database id
16 ReadValue<uint32_t>(InFile, this->DatabaseId1);
17 ReadValue<uint32_t>(InFile, this->DatabaseId2);
18 // is hero
19 ReadValue<bool>(InFile, this->IsActor1Hero);
20 ReadValue<bool>(InFile, this->IsActor2Hero);
21}
22// 将碰撞数据写入输出流
23void CarlaRecorderCollision::Write(std::ostream &OutFile) const
24{
25 // id
26 WriteValue<uint32_t>(OutFile, this->Id);
27 // actors database id
28 WriteValue<uint32_t>(OutFile, this->DatabaseId1);
29 WriteValue<uint32_t>(OutFile, this->DatabaseId2);
30 // is hero
31 WriteValue<bool>(OutFile, this->IsActor1Hero);
32 WriteValue<bool>(OutFile, this->IsActor2Hero);
33}
34// 判断两个 CarlaRecorderCollision 对象(DatabaseId1、DatabaseId2)是否相等
36{
37 return (this->DatabaseId1 == Other.DatabaseId1 &&
38 this->DatabaseId2 == Other.DatabaseId2);
39}
40//---------------------------------------------
41// 清空所有碰撞记录
42// 将 Collisions 容器中的所有元素移除
44{
45 Collisions.clear();
46}
47
48// 将新的碰撞记录添加到 Collisions 集合中,使用 std::move 以避免不必要的拷贝,直接将 Collision 对象转移到集合中
53// 将所有碰撞记录写入输出文件,遍历 Collisions 集合,将每一项碰撞记录通过 Write 方法写入文件
54void CarlaRecorderCollisions::Write(std::ostream &OutFile)
55{
56 // write the packet id
57 WriteValue<char>(OutFile, static_cast<char>(CarlaRecorderPacketId::Collision));
58
59 // write the packet size
60 uint32_t Total = 2 + Collisions.size() * sizeof(CarlaRecorderCollision);
61 WriteValue<uint32_t>(OutFile, Total);
62
63 // write total records
64 Total = Collisions.size();
65 WriteValue<uint16_t>(OutFile, Total);
66
67 // for (uint16_t i=0; i<Total; ++i)
68 for (auto &Coll : Collisions)
69 {
70 Coll.Write(OutFile);
71 }
72}
void Add(const CarlaRecorderCollision &Collision)
void Write(std::ostream &OutFile)
std::unordered_set< CarlaRecorderCollision > Collisions
void Read(std::istream &InFile)
void Write(std::ostream &OutFile) const
bool operator==(const CarlaRecorderCollision &Other) const