@@ -160,29 +160,16 @@ class PongGame
160160 server_.publishUpdate ();
161161 }
162162
163- void processPaddleFeedback ( const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback )
163+ void processPaddleFeedback ( unsigned player, const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback )
164164 {
165- boost::mutex::scoped_lock lock;
166- std::string control_marker_name = feedback->marker_name ;
167-
168- int player;
169- std::string display_marker_name;
170-
171- if ( control_marker_name == " player_1_control" )
172- {
173- player = 0 ;
174- display_marker_name = " player_1_display" ;
175- }
176- else if ( control_marker_name == " player_2_control" )
177- {
178- player = 1 ;
179- display_marker_name = " player_2_display" ;
180- }
181- else
165+ if ( player > 1 )
182166 {
183167 return ;
184168 }
185169
170+ boost::mutex::scoped_lock lock;
171+ std::string control_marker_name = feedback->marker_name ;
172+
186173 geometry_msgs::Pose pose = feedback->pose ;
187174
188175 // clamp position
@@ -201,16 +188,7 @@ class PongGame
201188 player_contexts_[player].active = feedback->dragging ;
202189
203190 // copy pose to display marker
204- server_.setPose ( display_marker_name, pose );
205-
206- switch ( feedback->event_type )
207- {
208- case visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE :
209- break ;
210-
211- default :
212- break ;
213- }
191+ server_.setPose ( feedback->marker_name +" _display" , pose );
214192 }
215193
216194 // restart round
@@ -375,14 +353,16 @@ class PongGame
375353 float player_x = FIELD_WIDTH * 0.5 + BORDER_SIZE ;
376354
377355 // Control for player 1
378- int_marker.name = " player_1_control " ;
356+ int_marker.name = " paddle0 " ;
379357 int_marker.pose .position .x = -player_x;
380- server_.insert ( int_marker, boost::bind ( &PongGame::processPaddleFeedback, this , _1 ) );
358+ server_.insert ( int_marker );
359+ server_.setCallback ( int_marker.name , boost::bind ( &PongGame::processPaddleFeedback, this , 0 , _1 ), visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE );
381360
382361 // Control for player 2
383- int_marker.name = " player_2_control " ;
362+ int_marker.name = " paddle1 " ;
384363 int_marker.pose .position .x = player_x;
385- server_.insert ( int_marker, boost::bind ( &PongGame::processPaddleFeedback, this , _1 ) );
364+ server_.insert ( int_marker );
365+ server_.setCallback ( int_marker.name , boost::bind ( &PongGame::processPaddleFeedback, this , 1 , _1 ), visualization_msgs::InteractiveMarkerFeedback::POSE_UPDATE );
386366
387367 // Make display markers
388368 marker.scale .x = BORDER_SIZE ;
@@ -395,7 +375,7 @@ class PongGame
395375 control.always_visible = true ;
396376
397377 // Display for player 1
398- int_marker.name = " player_1_display " ;
378+ int_marker.name = " paddle0_display " ;
399379 int_marker.pose .position .x = -player_x;
400380
401381 marker.color .g = 1.0 ;
@@ -408,7 +388,7 @@ class PongGame
408388 server_.insert ( int_marker );
409389
410390 // Display for player 2
411- int_marker.name = " player_2_display " ;
391+ int_marker.name = " paddle1_display " ;
412392 int_marker.pose .position .x = player_x;
413393
414394 marker.color .g = 0.5 ;
0 commit comments