|
@@ -2449,22 +2449,42 @@ static void AddSignalMark(Road * pRoad, int nlane,std::vector<PlanPoint> & xvect
|
|
|
for(i=0;i<nsigcount;i++)
|
|
|
{
|
|
|
Signal * pSig = pRoad->GetSignal(i);
|
|
|
- int nfromlane = -100;
|
|
|
- int ntolane = 100;
|
|
|
- signal_laneValidity * pSig_laneValidity = pSig->GetlaneValidity();
|
|
|
- if(pSig_laneValidity != 0)
|
|
|
- {
|
|
|
- nfromlane = pSig_laneValidity->GetfromLane();
|
|
|
- ntolane = pSig_laneValidity->GettoLane();
|
|
|
- }
|
|
|
- if((nlane < 0)&&(nfromlane >= 0))
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if((nlane > 0)&&(ntolane<=0))
|
|
|
+
|
|
|
+ // signal_laneValidity * pSig_laneValidity = pSig->GetlaneValidity();
|
|
|
+ if(pSig->GetlaneValidityCount()>0)
|
|
|
{
|
|
|
- continue;
|
|
|
+ bool bvalid = false;
|
|
|
+ vector<signal_laneValidity> * pvectorval = pSig->GetlaneValidityVector();
|
|
|
+ unsigned int nsize = static_cast<unsigned int>(pvectorval->size());
|
|
|
+ unsigned int j;
|
|
|
+ for(j=0;j<nsize;j++)
|
|
|
+ {
|
|
|
+ int nfromlane = -100;
|
|
|
+ int ntolane = 100;
|
|
|
+ nfromlane = pvectorval->at(j).GetfromLane();
|
|
|
+ ntolane = pvectorval->at(j).GettoLane();
|
|
|
+ if((nlane>=nfromlane)&&(nlane<=ntolane))
|
|
|
+ {
|
|
|
+ bvalid = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(bvalid == false)continue;
|
|
|
}
|
|
|
+// if(pSig_laneValidity != 0)
|
|
|
+// {
|
|
|
+// nfromlane = pSig_laneValidity->GetfromLane();
|
|
|
+// ntolane = pSig_laneValidity->GettoLane();
|
|
|
+// }
|
|
|
+// if((nlane < 0)&&(nfromlane >= 0))
|
|
|
+// {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// if((nlane > 0)&&(ntolane<=0))
|
|
|
+// {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
|
|
|
double s = pSig->Gets();
|
|
|
double fpos = s/pRoad->GetRoadLength();
|