|
@@ -207,11 +207,15 @@ bool OpenDriveXmlParser::ReadRoad(TiXmlElement *node)
|
|
|
bProc = ReadRoadBorrows(road, subNode);
|
|
|
if(bProc == false)
|
|
|
{
|
|
|
- TiXmlPrinter *printer = new TiXmlPrinter();
|
|
|
- subNode->Accept(printer );
|
|
|
- std::string str = printer->Str();
|
|
|
- road->GetUserData()->push_back(str);
|
|
|
-
|
|
|
+ bProc = ReadRoadNoavoids(road,subNode);
|
|
|
+ if(bProc == false)
|
|
|
+ {
|
|
|
+ TiXmlPrinter *printer = new TiXmlPrinter();
|
|
|
+ subNode->Accept(printer );
|
|
|
+ std::string str = printer->Str();
|
|
|
+ road->GetUserData()->push_back(str);
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
subNode=subNode->NextSiblingElement("userData");
|
|
|
}
|
|
@@ -1689,6 +1693,45 @@ bool OpenDriveXmlParser::ReadRoadBorrow(Road *road, TiXmlElement *node)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+bool OpenDriveXmlParser::ReadRoadNoavoids(Road * road, TiXmlElement *node)
|
|
|
+{
|
|
|
+ string strcode;
|
|
|
+ if(node->QueryStringAttribute("code",&strcode) != TIXML_SUCCESS)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(strcode != "roadnoavoid")
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ TiXmlElement *subNode = node->FirstChildElement("roadnoavoid");
|
|
|
+ while (subNode)
|
|
|
+ {
|
|
|
+ ReadRoadNoavoid(road, subNode);
|
|
|
+ subNode=subNode->NextSiblingElement("roadnoavoid");
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+bool OpenDriveXmlParser::ReadRoadNoavoid(Road * road,TiXmlElement * node)
|
|
|
+{
|
|
|
+ double s;
|
|
|
+ double length;
|
|
|
+ int checker=TIXML_SUCCESS;
|
|
|
+ checker+=node->QueryDoubleAttribute("sOffset",&s);
|
|
|
+ checker+=node->QueryDoubleAttribute("length",&length);
|
|
|
+ if(checker != TIXML_SUCCESS)
|
|
|
+ {
|
|
|
+ cout<<"Error parsing Road Noavoid attributes"<<endl;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ road->AddRoadNoavoid(s,length);
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
bool OpenDriveXmlParser::ReadSignals (Road* road, TiXmlElement *node)
|