Browse Source

change opendrive. complete junction group.

yuchuli 1 year ago
parent
commit
4fe861b95f
1 changed files with 39 additions and 0 deletions
  1. 39 0
      src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp

+ 39 - 0
src/common/common/xodr/OpenDrive/OpenDriveXmlWriter.cpp

@@ -3039,12 +3039,45 @@ bool OpenDriveXmlWriter::WriteJunctionsurfaceCRG(TiXmlElement *node, Junctionsur
 
 
 bool OpenDriveXmlWriter::WriteJunctionGroup(TiXmlElement *node, JunctionGroup *junctionGroup)
 bool OpenDriveXmlWriter::WriteJunctionGroup(TiXmlElement *node, JunctionGroup *junctionGroup)
 {
 {
+    std::string id,type,name;
+    id = junctionGroup->Getid();
+    type = junctionGroup->Gettype();
+
+    TiXmlElement *nodeJunctionGroup = new TiXmlElement("junctionGroup");
+
+    node->LinkEndChild(nodeJunctionGroup);
+
+    nodeJunctionGroup->SetAttribute("id",id);
+    nodeJunctionGroup->SetAttribute("type",type);
+
+    if(junctionGroup->Getname(name) == 1)
+    {
+        nodeJunctionGroup->SetAttribute("name",name);
+    }
+
+    unsigned int JunctionGroupReferenceCount = junctionGroup->GetjunctionReferenceCount();
+    for(unsigned int i=0;i<JunctionGroupReferenceCount;i++)
+    {
+
+        JunctionGroupReference * pJunctionGroupReference = junctionGroup->GetjunctionReference(i);
+        WriteJunctionGroupReference(nodeJunctionGroup,pJunctionGroupReference);
+    }
+
+
+    return true;
+
 
 
 }
 }
 
 
 bool OpenDriveXmlWriter::WriteJunctionGroupReference(TiXmlElement *node, JunctionGroupReference *junctionGroupReference)
 bool OpenDriveXmlWriter::WriteJunctionGroupReference(TiXmlElement *node, JunctionGroupReference *junctionGroupReference)
 {
 {
+    TiXmlElement * nodeJunctionGroupReference = new TiXmlElement("junctionReference");
+
+    node->LinkEndChild(nodeJunctionGroupReference);
 
 
+    nodeJunctionGroupReference->SetAttribute("junction",junctionGroupReference->Getjunction());
+
+    return true;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
@@ -3087,6 +3120,12 @@ bool OpenDriveXmlWriter::WriteFile(std::string fileName)
         WriteController(rootNode,mOpenDrive->GetController(i));
         WriteController(rootNode,mOpenDrive->GetController(i));
     }
     }
 
 
+    unsigned int junctionGroupCount = mOpenDrive->GetJunctionGroupCount();
+    for(unsigned int i=0;i<junctionGroupCount; i++)
+    {
+        WriteJunctionGroup(rootNode,mOpenDrive->GetJunctionGroup(i));
+    }
+
 	// Saves the XML structure to the file
 	// Saves the XML structure to the file
     return doc.SaveFile( fileName );
     return doc.SaveFile( fileName );