|
@@ -2434,6 +2434,9 @@ bool OpenDriveXmlWriter::WriteJunction (TiXmlElement *node, Junction *junction)
|
|
//Controllers
|
|
//Controllers
|
|
WriteJunctionController(nodeJunction, junction);
|
|
WriteJunctionController(nodeJunction, junction);
|
|
|
|
|
|
|
|
+ //CrossPass
|
|
|
|
+ WriteJunctionCrossPass(nodeJunction,junction);
|
|
|
|
+
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
//--------------
|
|
//--------------
|
|
@@ -2534,6 +2537,85 @@ bool OpenDriveXmlWriter::WriteJunctionController (TiXmlElement *node, Junction*
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool OpenDriveXmlWriter::WriteJunctionCrossPass(TiXmlElement *node, Junction* junction)
|
|
|
|
+{
|
|
|
|
+ string strId;
|
|
|
|
+ string strcrossingRoad;
|
|
|
|
+ string strroadAtStart;
|
|
|
|
+ string strroadAtEnd;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ unsigned int junctionCrossPassCount = junction->GetJunctionCrossPathCount();
|
|
|
|
+ for(unsigned i=0;i<junctionCrossPassCount;i++)
|
|
|
|
+ {
|
|
|
|
+ JunctionCrossPath *lJunctionCrossPass = junction->GetJunctionCrossPath(i);
|
|
|
|
+
|
|
|
|
+ strId = lJunctionCrossPass->GetId();
|
|
|
|
+ strcrossingRoad = lJunctionCrossPass->GetcrossingRoad();
|
|
|
|
+ strroadAtStart = lJunctionCrossPass->GetroadAtStart();
|
|
|
|
+ strroadAtEnd = lJunctionCrossPass->GetroadAtEnd();
|
|
|
|
+
|
|
|
|
+ TiXmlElement * nodeJunctionCrossPass = new TiXmlElement("crossPath");
|
|
|
|
+ node->LinkEndChild(nodeJunctionCrossPass);
|
|
|
|
+
|
|
|
|
+ nodeJunctionCrossPass->SetAttribute("id",strId);
|
|
|
|
+ nodeJunctionCrossPass->SetAttribute("crossingRoad",strcrossingRoad);
|
|
|
|
+ nodeJunctionCrossPass->SetAttribute("roadAtStart",strroadAtStart);
|
|
|
|
+ nodeJunctionCrossPass->SetAttribute("roadAtEnd",strroadAtEnd);
|
|
|
|
+
|
|
|
|
+ WriteJunctionCrossPassStartLaneLink(nodeJunctionCrossPass,lJunctionCrossPass);
|
|
|
|
+ WriteJunctionCrossPassEndLaneLink(nodeJunctionCrossPass,lJunctionCrossPass);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+bool OpenDriveXmlWriter::WriteJunctionCrossPassStartLaneLink(TiXmlElement *node, JunctionCrossPath* junctionCrossPass)
|
|
|
|
+{
|
|
|
|
+ JunctionCrossPathStartLaneLink startLaneLink;
|
|
|
|
+ startLaneLink = junctionCrossPass->GetstartLaneLink();
|
|
|
|
+
|
|
|
|
+ double s;
|
|
|
|
+ int nFrom;
|
|
|
|
+ int nTo;
|
|
|
|
+
|
|
|
|
+ s = startLaneLink.GetS();
|
|
|
|
+ nFrom = startLaneLink.GetFrom();
|
|
|
|
+ nTo = startLaneLink.GetTo();
|
|
|
|
+
|
|
|
|
+ TiXmlElement * nodeJunctionCrossPassStartLaneLink = new TiXmlElement("startLaneLink");
|
|
|
|
+ node->LinkEndChild(nodeJunctionCrossPassStartLaneLink);
|
|
|
|
+
|
|
|
|
+ nodeJunctionCrossPassStartLaneLink->SetDoubleAttribute("s",s);
|
|
|
|
+ nodeJunctionCrossPassStartLaneLink->SetAttribute("from",nFrom);
|
|
|
|
+ nodeJunctionCrossPassStartLaneLink->SetAttribute("to",nTo);
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+bool OpenDriveXmlWriter::WriteJunctionCrossPassEndLaneLink(TiXmlElement *node, JunctionCrossPath* junctionCrossPass)
|
|
|
|
+{
|
|
|
|
+ JunctionCrossPathEndLaneLink endLaneLink;
|
|
|
|
+ endLaneLink = junctionCrossPass->GetendLaneLink();
|
|
|
|
+
|
|
|
|
+ double s;
|
|
|
|
+ int nFrom;
|
|
|
|
+ int nTo;
|
|
|
|
+
|
|
|
|
+ s = endLaneLink.GetS();
|
|
|
|
+ nFrom = endLaneLink.GetFrom();
|
|
|
|
+ nTo = endLaneLink.GetTo();
|
|
|
|
+
|
|
|
|
+ TiXmlElement * nodeJunctionCrossPassEndLaneLink = new TiXmlElement("endLaneLink");
|
|
|
|
+ node->LinkEndChild(nodeJunctionCrossPassEndLaneLink);
|
|
|
|
+
|
|
|
|
+ nodeJunctionCrossPassEndLaneLink->SetDoubleAttribute("s",s);
|
|
|
|
+ nodeJunctionCrossPassEndLaneLink->SetAttribute("from",nFrom);
|
|
|
|
+ nodeJunctionCrossPassEndLaneLink->SetAttribute("to",nTo);
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
//---------------------------------------------------------------------------
|
|
|
|
|