CARLA
 
载入中...
搜索中...
未找到
CarlaRecorderAnimVehicle.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 CarlaRecorderAnimVehicle::Write(std::ostream &OutFile)
12{
13 // database id
14 WriteValue<uint32_t>(OutFile, this->DatabaseId);// 写入数据库ID
15 WriteValue<float>(OutFile, this->Steering);// 写入转向值
16 WriteValue<float>(OutFile, this->Throttle);// 写入油门值
17 WriteValue<float>(OutFile, this->Brake);// 写入刹车值
18 WriteValue<bool>(OutFile, this->bHandbrake);// 写入手刹状态
19 WriteValue<int32_t>(OutFile, this->Gear);// 写入档位
20}
21// 从输入文件读取动画车辆的数据
22void CarlaRecorderAnimVehicle::Read(std::istream &InFile)
23{
24 // database id
25 ReadValue<uint32_t>(InFile, this->DatabaseId);// 读取数据库ID
26 ReadValue<float>(InFile, this->Steering);// 读取转向值
27 ReadValue<float>(InFile, this->Throttle);// 读取油门值
28 ReadValue<float>(InFile, this->Brake);// 读取刹车值
29 ReadValue<bool>(InFile, this->bHandbrake);// 读取手刹状态
30 ReadValue<int32_t>(InFile, this->Gear);// 读取档位
31}
32
33// ---------------------------------------------
34// 清除所有动画车辆的数据
36{
37 Vehicles.clear();// 清空车辆列表
38}
39// 添加一个新的动画车辆到列表
41{
42 Vehicles.push_back(Vehicle);// 将车辆添加到列表
43}
44// 将所有动画车辆的数据写入输出文件
45void CarlaRecorderAnimVehicles::Write(std::ostream &OutFile)
46{
47 // write the packet id
48 WriteValue<char>(OutFile, static_cast<char>(CarlaRecorderPacketId::AnimVehicle));
49// 写入动画车辆的数据包ID
50 std::streampos PosStart = OutFile.tellp();// 获取当前写入位置
51
52
53 // write a dummy packet size
54 uint32_t Total = 0;
55 WriteValue<uint32_t>(OutFile, Total);
56
57 // write total records
58 Total = Vehicles.size();// 获取车辆总数
59 WriteValue<uint16_t>(OutFile, Total);// 写入车辆总数
60
61 for (uint16_t i=0; i<Total; ++i)
62 Vehicles[i].Write(OutFile);// 写入每辆车的数据
63
64 // write the real packet size
65 std::streampos PosEnd = OutFile.tellp();// 获取当前写入位置
66 Total = PosEnd - PosStart - sizeof(uint32_t);// 计算实际数据包大小
67 OutFile.seekp(PosStart, std::ios::beg);// 移动写入位置到数据包大小的位置
68 WriteValue<uint32_t>(OutFile, Total);// 写入实际数据包大小
69 OutFile.seekp(PosEnd, std::ios::beg);// 移动写入位置到文件末尾
70}
71// 从输入文件读取所有动画车辆的数据
72void CarlaRecorderAnimVehicles::Read(std::istream &InFile)
73{
74 uint16_t i, Total;
76
77 // read Total Vehicles
78 ReadValue<uint16_t>(InFile, Total);
79 for (i = 0; i < Total; ++i)
80 {
81 Vehicle.Read(InFile);
82 Add(Vehicle);
83 }
84}
85// 获取所有动画车辆的数据
86const std::vector<CarlaRecorderAnimVehicle>& CarlaRecorderAnimVehicles::GetVehicles()
87{
88 return Vehicles;
89}
const std::vector< CarlaRecorderAnimVehicle > & GetVehicles()
void Write(std::ostream &OutFile)
void Read(std::istream &InFile)
void Add(const CarlaRecorderAnimVehicle &InObj)
std::vector< CarlaRecorderAnimVehicle > Vehicles
void Read(std::istream &InFile)
void Write(std::ostream &OutFile)