|
@@ -86,11 +86,13 @@ bool OpenDriveXmlWriter::WriteRoad(TiXmlElement *node, Road *road)
|
|
|
double length;
|
|
|
string id;
|
|
|
string junction;
|
|
|
+ string rule;
|
|
|
|
|
|
name = road->GetRoadName();
|
|
|
length = road->GetRoadLength();
|
|
|
id = road->GetRoadId();
|
|
|
junction = road->GetRoadJunction();
|
|
|
+ rule = road->GetRoadRule();
|
|
|
|
|
|
TiXmlElement *nodeRoad = new TiXmlElement("road");
|
|
|
node->LinkEndChild(nodeRoad);
|
|
@@ -101,6 +103,10 @@ bool OpenDriveXmlWriter::WriteRoad(TiXmlElement *node, Road *road)
|
|
|
nodeRoad->SetAttribute("length",slength.str());
|
|
|
nodeRoad->SetAttribute("id",id);
|
|
|
nodeRoad->SetAttribute("junction",junction);
|
|
|
+ if(rule != "")
|
|
|
+ {
|
|
|
+ nodeRoad->SetAttribute("rule",rule);
|
|
|
+ }
|
|
|
|
|
|
//Fill in
|
|
|
|
|
@@ -531,6 +537,12 @@ bool OpenDriveXmlWriter::WriteLanes (TiXmlElement *node, Road* road)
|
|
|
WriteLaneSections(nodeLanes, road->GetLaneSection(i));
|
|
|
}
|
|
|
|
|
|
+ unsigned int lLaneOffsetCount = road->GetLaneOffsetCount();
|
|
|
+ for(unsigned int i=0; i<lLaneOffsetCount; i++)
|
|
|
+ {
|
|
|
+ WriteLaneOffset(nodeLanes, road->GetLaneOffset(i));
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
//--------------
|
|
@@ -590,6 +602,34 @@ bool OpenDriveXmlWriter::WriteLaneSections (TiXmlElement *node, LaneSection *lan
|
|
|
}
|
|
|
//--------------
|
|
|
|
|
|
+bool OpenDriveXmlWriter::WriteLaneOffset(TiXmlElement *node, LaneOffset *laneOffset)
|
|
|
+{
|
|
|
+ double s;
|
|
|
+ s=laneOffset->GetS();
|
|
|
+
|
|
|
+ TiXmlElement* nodeLaneSection = new TiXmlElement("laneOffset");
|
|
|
+ node->LinkEndChild(nodeLaneSection);
|
|
|
+
|
|
|
+ std::stringstream ss;
|
|
|
+ ss << setprecision(16) << setiosflags (ios_base::scientific) << s;
|
|
|
+ nodeLaneSection->SetAttribute("s",ss.str());
|
|
|
+
|
|
|
+ ss << setprecision(16) << setiosflags (ios_base::scientific) << laneOffset->Geta();
|
|
|
+ nodeLaneSection->SetAttribute("a",ss.str());
|
|
|
+
|
|
|
+ ss << setprecision(16) << setiosflags (ios_base::scientific) << laneOffset->Getb();
|
|
|
+ nodeLaneSection->SetAttribute("b",ss.str());
|
|
|
+
|
|
|
+ ss << setprecision(16) << setiosflags (ios_base::scientific) << laneOffset->Getc();
|
|
|
+ nodeLaneSection->SetAttribute("c",ss.str());
|
|
|
+
|
|
|
+ ss << setprecision(16) << setiosflags (ios_base::scientific) << laneOffset->Getd();
|
|
|
+ nodeLaneSection->SetAttribute("d",ss.str());
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+//--------------
|
|
|
+
|
|
|
bool OpenDriveXmlWriter::WriteLane (TiXmlElement *node, Lane* lane)
|
|
|
{
|
|
|
//Write Lane attributes
|