14 static constexpr int NUM_SUBDIVISIONS = 126;
15 std::vector<VIPRA::Geometry::Polygon> obstacles;
16 std::map<std::string, std::vector<VIPRA::Geometry::Polygon>> objectives;
17 std::vector<VIPRA::Geometry::Polygon> spawns;
18 std::map<std::string, VIPRA::Geometry::Polygon> areas;
20 void addLWPolyline(
const DRW_LWPolyline& data)
override
22 bool isClosed = (data.flags & 0x01U) != 0U;
26 for (
auto const& vertex : data.vertlist ) {
27 points.emplace_back(vertex->x, vertex->y);
30 add_obstacle(points, data.layer);
35 add_polyline_path(data);
38 void addLine(
const DRW_Line& data)
override
40 add_obstacle({
VIPRA::f3d{data.basePoint.x, data.basePoint.y},
45 void addPoint(
const DRW_Point& data)
override
47 add_obstacle({
VIPRA::f3d{data.basePoint.x, data.basePoint.y}}, data.layer);
50 void add_polyline_path(
const DRW_LWPolyline& data)
53 for (
int i = 0; i < data.vertexnum - 1; i++ ) {
54 std::shared_ptr<DRW_Vertex2D>
const& vertex = data.vertlist[i];
55 std::shared_ptr<DRW_Vertex2D>
const& nextVertex = data.vertlist[i];
56 std::vector<VIPRA::f3d> line = {
VIPRA::f3d{vertex->x, vertex->y},
59 add_obstacle(line, data.layer);
63 void add_obstacle(std::initializer_list<VIPRA::f3d>
const& points,
64 std::string object_type)
66 std::string objectTypeCaseless = object_type;
67 transform(object_type.begin(), object_type.end(), object_type.begin(), ::toupper);
69 if ( object_type ==
"OBSTACLES" ) {
70 obstacles.emplace_back(points);
72 else if ( object_type ==
"SPAWNS" ) {
73 spawns.emplace_back(points);
75 else if ( object_type.find(
"AREAS") != std::string::npos ) {
79 if ( objectives[objectTypeCaseless].empty() ) {
83 objectives[objectTypeCaseless].emplace_back(points);
88 void add_obstacle(std::vector<VIPRA::f3d>
const& points, std::string object_type)
90 std::string objectTypeCaseless = object_type;
91 transform(object_type.begin(), object_type.end(), object_type.begin(), ::toupper);
93 if ( object_type ==
"OBSTACLES" ) {
94 obstacles.emplace_back(points);
96 else if ( object_type ==
"SPAWNS" ) {
97 spawns.emplace_back(points);
99 else if ( object_type.find(
"AREAS") != std::string::npos ) {
103 if ( objectives[objectTypeCaseless].empty() ) {
107 objectives[objectTypeCaseless].emplace_back(points);
112 void addRay(
const DRW_Ray& )
override
116 void addXline(
const DRW_Xline& )
override
120 void addArc(
const DRW_Arc& )
override
124 void addCircle(
const DRW_Circle& )
override
128 void addEllipse(
const DRW_Ellipse& )
override
132 void addPolyline(
const DRW_Polyline& )
override
136 void addSpline(
const DRW_Spline* )
override
140 void addKnot(
const DRW_Entity& )
override
144 void addInsert(
const DRW_Insert& )
override
148 void addTrace(
const DRW_Trace& )
override
152 void add3dFace(
const DRW_3Dface& )
override
156 void addSolid(
const DRW_Solid& )
override
160 void addHeader(
const DRW_Header* data)
override {}
161 void addLType(
const DRW_LType& data)
override {}
162 void addLayer(
const DRW_Layer& data)
override {}
163 void addDimStyle(
const DRW_Dimstyle& data)
override {}
164 void addVport(
const DRW_Vport& data)
override {}
165 void addTextStyle(
const DRW_Textstyle& data)
override {}
166 void addAppId(
const DRW_AppId& data)
override {}
167 void addBlock(
const DRW_Block& data)
override {}
168 void setBlock(
const int handle)
override {}
169 void endBlock()
override {}
170 void addMText(
const DRW_MText& data)
override {}
171 void addText(
const DRW_Text& data)
override {}
172 void addDimAlign(
const DRW_DimAligned* data)
override {}
173 void addDimLinear(
const DRW_DimLinear* data)
override {}
174 void addDimRadial(
const DRW_DimRadial* data)
override {}
175 void addDimDiametric(
const DRW_DimDiametric* data)
override {}
176 void addDimAngular(
const DRW_DimAngular* data)
override {}
177 void addDimAngular3P(
const DRW_DimAngular3p* data)
override {}
178 void addDimOrdinate(
const DRW_DimOrdinate* data)
override {}
179 void addLeader(
const DRW_Leader* data)
override {}
180 void addHatch(
const DRW_Hatch* data)
override {}
181 void addViewport(
const DRW_Viewport& data)
override {}
182 void addImage(
const DRW_Image* data)
override {}
183 void linkImage(
const DRW_ImageDef* data)
override {}
184 void addComment(
const char* comment)
override {}
185 void addPlotSettings(
const DRW_PlotSettings* data)
override {}
186 void writeHeader(DRW_Header& data)
override {}
187 void writeBlocks()
override {}
188 void writeBlockRecords()
override {}
189 void writeEntities()
override {}
190 void writeLTypes()
override {}
191 void writeLayers()
override {}
192 void writeTextstyles()
override {}
193 void writeVports()
override {}
194 void writeDimstyles()
override {}
195 void writeObjects()
override {}
196 void writeAppId()
override {}
static VIPRA_INLINE void warn(fmt::format_string< param_ts... > message, param_ts &&... params)
Calls the provided Logger with Level WARN.
Definition logging.hpp:51