@@ -77,16 +77,29 @@ WaitingQueue::~WaitingQueue()
7777
7878void WaitingQueue::enqueueAgent ( Agent *a )
7979{
80- if ( queueing_agents_.size () == 15 ) // TEMP limit queue size
80+ if ( queueing_agents_.size () == 20 ) // TEMP limit queue size
8181 return ;
8282
8383 // make the agent stop
8484 a->setStationary ();
8585
8686 // set position to the end of the queue
87+ // NOTE - old way with setting positions
8788 Ped::Tvector qend = getQueueEnd ();
8889 a->setPosition ( qend.x , qend.y );
8990
91+ // NOTE - new way with follow id
92+ // if ( queueing_agents_.size() == 0 )
93+ // {
94+ // Ped::Tvector qend = getQueueEnd();
95+ // a->setPosition ( qend.x, qend.y );
96+ // }
97+ // else
98+ // {
99+ // int follow_id = getLastAgentId();
100+ // a->setFollow(follow_id);
101+ // }
102+
90103 a->updateState ( StateMachine::JOIN_QUEUE );
91104
92105 queueing_agents_.push_back ( a );
@@ -101,7 +114,7 @@ void WaitingQueue::serveAgent()
101114 releaseAgent ( lucky_one );
102115
103116 // update queue
104- // updateQueue(lucky_one->getx(), lucky_one->gety());
117+ updateQueue (lucky_one->getx (), lucky_one->gety ());
105118
106119 time_passed_ = 0 ;
107120 }
@@ -157,8 +170,8 @@ Ped::Tvector WaitingQueue::getQueueEnd()
157170 if ( queueing_agents_.size () == 0 )
158171 {
159172 return Ped::Tvector (
160- x_ + ( buffer * cos ( theta_ ) ),
161- y_ + ( buffer * sin ( theta_ ) ),
173+ x_ + ( buffer+ 1 * cos ( theta_ ) ),
174+ y_ + ( buffer+ 1 * sin ( theta_ ) ),
162175 0.0 );
163176 }
164177 else
@@ -169,4 +182,12 @@ Ped::Tvector WaitingQueue::getQueueEnd()
169182 last_one->gety () + ( buffer * sin ( theta_ ) ),
170183 0.0 );
171184 }
185+ }
186+
187+ int WaitingQueue::getLastAgentId ()
188+ {
189+ if ( queueing_agents_.size () == 0 )
190+ return -1 ;
191+ else
192+ return queueing_agents_.back ()->getid ();
172193}
0 commit comments