|
@@ -358,6 +358,21 @@ RoadBorrow * Road::GetRoadBorrow(unsigned int i)
|
|
|
else
|
|
|
return NULL;
|
|
|
}
|
|
|
+vector<RoadNoavoid> *Road::GetRoadNoavoidVector()
|
|
|
+{
|
|
|
+ return &mRoadNoavoidVector;
|
|
|
+}
|
|
|
+RoadNoavoid* Road::GetRoadNoavoid(unsigned int i)
|
|
|
+{
|
|
|
+ if((mRoadNoavoidVector.size()>0)&&(i<mRoadNoavoidVector.size()))
|
|
|
+ return &mRoadNoavoidVector.at(i);
|
|
|
+ else
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+unsigned int Road::GetRoadNoavoidCount()
|
|
|
+{
|
|
|
+ return mRoadNoavoidVector.size();
|
|
|
+}
|
|
|
//-------------------------------------------------
|
|
|
|
|
|
/**
|
|
@@ -429,6 +444,14 @@ RoadBorrow* Road::GetLastRoadBorrow()
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+RoadNoavoid* Road::GetLastRoadNoavoid()
|
|
|
+{
|
|
|
+ if(mRoadNoavoidVector.size()>0)
|
|
|
+ return &mRoadNoavoidVector.at(mRoadNoavoidVector.size()-1);
|
|
|
+ else
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* Getters for the last added child records in their respective vectors
|
|
@@ -496,6 +519,13 @@ RoadBorrow* Road::GetLastAddedRoadBorrow()
|
|
|
else
|
|
|
return NULL;
|
|
|
}
|
|
|
+RoadNoavoid* Road::GetLastAddedRoadNoavoid()
|
|
|
+{
|
|
|
+ if(mLastAddedRoadNoavoid<mRoadNoavoidVector.size())
|
|
|
+ return &mRoadNoavoidVector.at(mLastAddedRoadNoavoid);
|
|
|
+ else
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
//-------------------------------------------------
|
|
|
|
|
|
/**
|
|
@@ -686,6 +716,15 @@ unsigned int Road::AddRoadBorrow(double s,double length,string mode)
|
|
|
return index;
|
|
|
}
|
|
|
|
|
|
+unsigned int Road::AddRoadNoavoid(double s, double length)
|
|
|
+{
|
|
|
+ unsigned int index = CheckRoadNoavoidInterval(s)+1;
|
|
|
+ if(index>=GetRoadNoavoidCount()) mRoadNoavoidVector.push_back(RoadNoavoid(s,length));
|
|
|
+ else mRoadNoavoidVector.insert(mRoadNoavoidVector.begin()+index, RoadNoavoid(s,length));
|
|
|
+ mLastAddedRoadNoavoid=index;
|
|
|
+ return index;
|
|
|
+}
|
|
|
+
|
|
|
//-------------
|
|
|
unsigned int Road::AddObject(string id,double s,double t,double zOffset)
|
|
|
{
|
|
@@ -898,6 +937,16 @@ unsigned int Road::CloneRoadBorrow(unsigned int index)
|
|
|
return mLastAddedRoadBorrow;
|
|
|
}
|
|
|
|
|
|
+unsigned int Road::CloneRoadNoavoid(unsigned int index)
|
|
|
+{
|
|
|
+ if(index<mRoadNoavoidVector.size()-1)
|
|
|
+ mRoadNoavoidVector.insert(mRoadNoavoidVector.begin()+index+1, mRoadNoavoidVector[index]);
|
|
|
+ else if(index==mRoadNoavoidVector.size()-1)
|
|
|
+ mRoadNoavoidVector.push_back(mRoadNoavoidVector[index]);
|
|
|
+ mLastAddedRoadNoavoid=index+1;
|
|
|
+ return mLastAddedRoadNoavoid;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* Methods used to delete child records from the respective vectors
|
|
@@ -945,6 +994,12 @@ void Road::DeleteRoadBorrow(unsigned int index)
|
|
|
mRoadBorrowVector.erase(mRoadBorrowVector.begin()+index);
|
|
|
}
|
|
|
|
|
|
+void Road::DeleteRoadNoavoid(unsigned int index)
|
|
|
+{
|
|
|
+ if(mRoadNoavoidVector.size() == 0)return;
|
|
|
+ mRoadNoavoidVector.erase(mRoadNoavoidVector.begin()+index);
|
|
|
+}
|
|
|
+
|
|
|
//-------------------------------------------------
|
|
|
// EVALUATION METHODS
|
|
|
|
|
@@ -1178,6 +1233,22 @@ int Road::CheckRoadBorrowInterval(double s_check)
|
|
|
}
|
|
|
return res; //return the result: 0 to MaxInt as the index to the record containing s_check or -1 if nothing found
|
|
|
|
|
|
+}
|
|
|
+//-----------
|
|
|
+int Road::CheckRoadNoavoidInterval(double s_check)
|
|
|
+{
|
|
|
+ int res=-1;
|
|
|
+ //Go through all the lane section records
|
|
|
+ for (unsigned int i=0;i<mRoadNoavoidVector.size();i++)
|
|
|
+ {
|
|
|
+ //check if the s_check belongs to the current record
|
|
|
+ if (mRoadNoavoidVector.at(i).CheckInterval(s_check))
|
|
|
+ res=i; //assign it to the result id
|
|
|
+ else
|
|
|
+ break; //if not, break;
|
|
|
+ }
|
|
|
+ return res; //return the result: 0 to MaxInt as the index to the record containing s_check or -1 if nothing found
|
|
|
+
|
|
|
}
|
|
|
//-----------
|
|
|
int Road::CheckLaneOffsetInterval(double s_check)
|