CARLA
载入中...
搜索中...
未找到
Unreal
CarlaUE4
Plugins
Carla
Source
Carla
Recorder
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
"
8
#include "
CarlaRecorderCollision.h
"
9
#include "
CarlaRecorderHelpers.h
"
10
// 从输入流中读取碰撞数据
11
void
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
// 将碰撞数据写入输出流
23
void
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)是否相等
35
bool
CarlaRecorderCollision::operator==
(
const
CarlaRecorderCollision
&
Other
)
const
36
{
37
return
(this->
DatabaseId1
== Other.
DatabaseId1
&&
38
this->DatabaseId2 ==
Other
.DatabaseId2);
39
}
40
//---------------------------------------------
41
// 清空所有碰撞记录
42
// 将 Collisions 容器中的所有元素移除
43
void
CarlaRecorderCollisions::Clear
(
void
)
44
{
45
Collisions
.clear();
46
}
47
48
// 将新的碰撞记录添加到 Collisions 集合中,使用 std::move 以避免不必要的拷贝,直接将 Collision 对象转移到集合中
49
void
CarlaRecorderCollisions::Add
(
const
CarlaRecorderCollision
&
Collision
)
50
{
51
Collisions
.insert(std::move(
Collision
));
52
}
53
// 将所有碰撞记录写入输出文件,遍历 Collisions 集合,将每一项碰撞记录通过 Write 方法写入文件
54
void
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
}
ELightType::Other
@ Other
CarlaRecorderCollision.h
CarlaRecorderHelpers.h
CarlaRecorder.h
CarlaRecorderPacketId::Collision
@ Collision
CarlaRecorderCollisions::Add
void Add(const CarlaRecorderCollision &Collision)
Definition
CarlaRecorderCollision.cpp:49
CarlaRecorderCollisions::Clear
void Clear(void)
Definition
CarlaRecorderCollision.cpp:43
CarlaRecorderCollisions::Write
void Write(std::ostream &OutFile)
Definition
CarlaRecorderCollision.cpp:54
CarlaRecorderCollisions::Collisions
std::unordered_set< CarlaRecorderCollision > Collisions
Definition
CarlaRecorderCollision.h:53
CarlaRecorderCollision
Definition
CarlaRecorderCollision.h:15
CarlaRecorderCollision::DatabaseId2
uint32_t DatabaseId2
Definition
CarlaRecorderCollision.h:18
CarlaRecorderCollision::IsActor1Hero
bool IsActor1Hero
Definition
CarlaRecorderCollision.h:19
CarlaRecorderCollision::Read
void Read(std::istream &InFile)
Definition
CarlaRecorderCollision.cpp:11
CarlaRecorderCollision::Write
void Write(std::ostream &OutFile) const
Definition
CarlaRecorderCollision.cpp:23
CarlaRecorderCollision::Id
uint32_t Id
Definition
CarlaRecorderCollision.h:16
CarlaRecorderCollision::IsActor2Hero
bool IsActor2Hero
Definition
CarlaRecorderCollision.h:20
CarlaRecorderCollision::operator==
bool operator==(const CarlaRecorderCollision &Other) const
Definition
CarlaRecorderCollision.cpp:35
CarlaRecorderCollision::DatabaseId1
uint32_t DatabaseId1
Definition
CarlaRecorderCollision.h:17
制作者
1.10.0