libcarla/include/carla/client/DebugHelper.cpp
2024-10-18 13:19:59 +08:00

86 lines
2.4 KiB
C++

// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
// de Barcelona (UAB).
//
// This work is licensed under the terms of the MIT license.
// For a copy, see <https://opensource.org/licenses/MIT>.
#include "carla/client/DebugHelper.h"
#include "carla/client/detail/Simulator.h"
#include "carla/rpc/DebugShape.h"
namespace carla {
namespace client {
using Shape = rpc::DebugShape;
template <typename T>
static void DrawShape(
detail::EpisodeProxy &episode,
const T &primitive,
rpc::Color color,
float life_time,
bool persistent_lines) {
const Shape shape{primitive, color, life_time, persistent_lines};
episode.Lock()->DrawDebugShape(shape);
}
void DebugHelper::DrawPoint(
const geom::Location &location,
float size,
sensor::data::Color color,
float life_time,
bool persistent_lines) {
Shape::Point point{location, size};
DrawShape(_episode, point, color, life_time, persistent_lines);
}
void DebugHelper::DrawLine(
const geom::Location &begin,
const geom::Location &end,
float thickness,
sensor::data::Color color,
float life_time,
bool persistent_lines) {
Shape::Line line{begin, end, thickness};
DrawShape(_episode, line, color, life_time, persistent_lines);
}
void DebugHelper::DrawArrow(
const geom::Location &begin,
const geom::Location &end,
float thickness,
float arrow_size,
sensor::data::Color color,
float life_time,
bool persistent_lines) {
Shape::Line line{begin, end, thickness};
Shape::Arrow arrow{line, arrow_size};
DrawShape(_episode, arrow, color, life_time, persistent_lines);
}
void DebugHelper::DrawBox(
const geom::BoundingBox &box,
const geom::Rotation &rotation,
float thickness,
sensor::data::Color color,
float life_time,
bool persistent_lines) {
Shape::Box the_box{box, rotation, thickness};
DrawShape(_episode, the_box, color, life_time, persistent_lines);
}
void DebugHelper::DrawString(
const geom::Location &location,
const std::string &text,
bool draw_shadow,
sensor::data::Color color,
float life_time,
bool persistent_lines) {
Shape::String string{location, text, draw_shadow};
DrawShape(_episode, string, color, life_time, persistent_lines);
}
} // namespace client
} // namespace carla