CARLA
载入中...
搜索中...
未找到
Unreal
CarlaUE4
Plugins
Carla
Source
Carla
MapGen
GraphTypes.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
// 包含Carla/MapGen/CityMapDefinitions.h头文件,可能其中定义了与城市地图相关的一些常量、类型等内容
10
#include "
Carla/MapGen/CityMapDefinitions.h
"
11
// 包含Carla/Util/NonCopyable.h头文件,推测其中定义了不可复制相关的类或功能
12
#include "
Carla/Util/NonCopyable.h
"
13
// 引入标准库中的vector容器,用于存放动态大小的同类型元素集合
14
#include <vector>
15
16
namespace
MapGen
{
17
// 如果定义了CARLA_ROAD_GENERATOR_EXTRA_LOG这个宏,以下结构体用于调试目的
18
#ifdef CARLA_ROAD_GENERATOR_EXTRA_LOG
19
/// 仅用于调试目的的模板结构体,用于给数据添加索引标识
20
/// 它继承自NonCopyable,意味着不能进行拷贝操作(通过私有继承实现)
21
template
<
char
C>
22
struct
DataIndex :
private
NonCopyable
23
{
24
// 构造函数,初始化时给当前对象的索引赋值为自增后的索引值
25
DataIndex() : index(++NEXT_INDEX) {}
26
27
// 静态函数,用于重置索引值,将其置为0
28
static
void
ResetIndex() {
29
NEXT_INDEX = 0u;
30
}
31
32
// 重载输出流运算符,用于方便地将该结构体对象输出到流中,格式为特定字符加上索引值
33
template
<
typename
OSTREAM>
34
friend
OSTREAM &
operator<<
(OSTREAM &os,
const
DataIndex &d) {
35
os << C << d.index;
36
return
os;
37
}
38
39
// private:
40
// 用于记录当前对象的索引值,初始化为0
41
uint32 index = 0u;
42
// 静态成员变量,用于记录下一个可用的索引值,初始为0
43
static
uint32 NEXT_INDEX;
44
};
45
// 根据是否定义了CARLA_ROAD_GENERATOR_EXTRA_LOG宏来定义不同的继承方式
46
#define INHERIT_GRAPH_TYPE_BASE_CLASS(c) : public DataIndex<c>
47
#else
48
#define INHERIT_GRAPH_TYPE_BASE_CLASS(c) : private NonCopyable
49
#endif
// CARLA_ROAD_GENERATOR_EXTRA_LOG
50
51
// 定义表示图节点的结构体,继承方式由上面的宏决定(可能是继承DataIndex用于调试,或者直接继承NonCopyable)
52
struct
GraphNode
INHERIT_GRAPH_TYPE_BASE_CLASS
('n')
53
{
54
// 记录节点的边的数量
55
uint32 EdgeCount;
56
// 初始假设每个节点都是交叉路口,后续可能会根据实际情况改变,用于标识节点是否为交叉路口
57
bool
bIsIntersection =
true
;
58
// 交叉路口的类型,其类型应该在CityMapDefinitions.h中定义(推测)
59
EIntersectionType
IntersectionType;
60
// 节点的旋转角度(可能是在地图中的角度相关信息)
61
float
Rotation;
62
// 存储多个旋转相关的值的向量,具体用途需结合更多上下文确定
63
std::vector<float> Rots;
64
};
65
66
// 定义表示图的半边(Half Edge)的结构体,同样继承方式由宏决定
67
struct
GraphHalfEdge
INHERIT_GRAPH_TYPE_BASE_CLASS
('e')
68
{
69
// 半边的角度信息,具体含义要看该图结构的应用场景
70
float
Angle;
71
};
72
73
// 定义表示图的面(Face)的结构体,继承方式由宏决定
74
struct
GraphFace
INHERIT_GRAPH_TYPE_BASE_CLASS
('f')
75
{
76
};
77
78
// 取消之前定义的宏,避免后续代码出现意外的影响
79
#undef INHERIT_GRAPH_TYPE_BASE_CLASS
80
81
}
// namespace MapGen
CityMapDefinitions.h
INHERIT_GRAPH_TYPE_BASE_CLASS
#define INHERIT_GRAPH_TYPE_BASE_CLASS(c)
Definition
GraphTypes.h:48
NonCopyable.h
GraphFace
GraphHalfEdge
GraphNode
NonCopyable
Definition
Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Util/NonCopyable.h:3
MapGen
Definition
CityAreaDescription.h:14
MapGen::EIntersectionType
EIntersectionType
Definition
CityMapDefinitions.h:11
std::operator<<
std::ostream & operator<<(std::ostream &out, const ::carla::client::Timestamp ×tamp)
标准输出流操作
Definition
Timestamp.h:75
制作者
1.10.0