From e2ed4cec4c922b86940a58678ed117baf14235a6 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Wed, 3 Jun 2020 17:18:08 +0200
Subject: [PATCH] Solved a bug when reading more than one object or signal:
 Only the first one was read because the root signal or object XML element was
 always used to find the next child, instead of the previous child.

---
 OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp b/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp
index f76d2e0..d725165 100644
--- a/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp
+++ b/OpenRoadEd/OpenDrive/OpenDriveXmlParser.cpp
@@ -934,6 +934,7 @@ bool OpenDriveXmlParser::ReadObjects (Road* road, TiXmlElement *node)
   object_node=node->FirstChildElement("object");
   while(object_node!=0)
   {
+    std::cout << "new object" << std::endl;
 	  checker=TIXML_SUCCESS;
   	checker+=object_node->QueryDoubleAttribute("s",&s);
 	  checker+=object_node->QueryDoubleAttribute("t",&t);
@@ -1007,7 +1008,7 @@ bool OpenDriveXmlParser::ReadObjects (Road* road, TiXmlElement *node)
         object->SetBoundingCylinder(radius,height);
     }
 
-    object_node=node->NextSiblingElement("object");
+    object_node=object_node->NextSiblingElement("object");
   }
 	return true;
 }
@@ -1024,6 +1025,7 @@ bool OpenDriveXmlParser::ReadSignals (Road* road, TiXmlElement *node)
   signal_node=node->FirstChildElement("signal");
   while(signal_node!=0)
   {
+    std::cout << "new signal" << std::endl;
 	  checker=TIXML_SUCCESS;
   	checker+=signal_node->QueryDoubleAttribute("s",&s);
 	  checker+=signal_node->QueryDoubleAttribute("t",&t);
@@ -1088,7 +1090,7 @@ bool OpenDriveXmlParser::ReadSignals (Road* road, TiXmlElement *node)
     signal->SetPitch(pitch);
     signal->SetRoll(roll);
 
-    signal_node=node->NextSiblingElement("signal");
+    signal_node=signal_node->NextSiblingElement("signal");
   }
 	return true;
 }
-- 
GitLab