@ -82,14 +82,15 @@ static int get_path_length_idx(const cereal::ModelDataV2::XYZTData::Reader &line 
			
		
	
		
			
				
					  return  max_idx ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  update_lead ( UIState  * s ,  const  cereal : : RadarState : : Reader  & radar_state ,  
			
		
	
		
			
				
					                        const  cereal : : ModelDataV2 : : XYZTData : : Reader  & line ,  int  idx )  {   
			
		
	
		
			
				
					  auto  & lead_data  =  s - > scene . lead_data [ idx ] ;   
			
		
	
		
			
				
					  lead_data  =  ( idx  = =  0 )  ?  radar_state . getLeadOne ( )  :  radar_state . getLeadTwo ( ) ;   
			
		
	
		
			
				
					  if  ( lead_data . getStatus ( ) )  {   
			
		
	
		
			
				
					    const  int  path_idx  =  get_path_length_idx ( line ,  lead_data . getDRel ( ) ) ;   
			
		
	
		
			
				
					    // negative because radarState uses left positive convention
   
			
		
	
		
			
				
					    calib_frame_to_full_frame ( s ,  lead_data . getDRel ( ) ,  - lead_data . getYRel ( ) ,  line . getZ ( ) [ path_idx ]  +  1.22 ,  & s - > scene . lead_vertices [ idx ] ) ;   
			
		
	
		
			
				
					static  void  update_leads ( UIState  * s ,  const  cereal : : RadarState : : Reader  & radar_state ,  std : : optional < cereal : : ModelDataV2 : : XYZTData : : Reader >  line )  {  
			
		
	
		
			
				
					  for  ( int  i  =  0 ;  i  <  2 ;  + + i )  {   
			
		
	
		
			
				
					    auto  lead_data  =  ( i  = =  0 )  ?  radar_state . getLeadOne ( )  :  radar_state . getLeadTwo ( ) ;   
			
		
	
		
			
				
					    if  ( lead_data . getStatus ( ) )  {   
			
		
	
		
			
				
					      float  z  =  line  ?  ( * line ) . getZ ( ) [ get_path_length_idx ( * line ,  lead_data . getDRel ( ) ) ]  :  0.0 ;   
			
		
	
		
			
				
					      // negative because radarState uses left positive convention
   
			
		
	
		
			
				
					      calib_frame_to_full_frame ( s ,  lead_data . getDRel ( ) ,  - lead_data . getYRel ( ) ,  z  +  1.22 ,  & s - > scene . lead_vertices [ i ] ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    s - > scene . lead_data [ i ]  =  lead_data ;   
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -151,10 +152,11 @@ static void update_sockets(UIState *s) { 
			
		
	
		
			
				
					    scene . car_state  =  sm [ " carState " ] . getCarState ( ) ;   
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					  if  ( sm . updated ( " radarState " ) )  {   
			
		
	
		
			
				
					    auto  radar_state  =  sm [ " radarState " ] . getRadarState ( ) ;   
			
		
	
		
			
				
					    const  auto  line  =  sm [ " modelV2 " ] . getModelV2 ( ) . getPosition ( ) ;   
			
		
	
		
			
				
					    update_lead ( s ,  radar_state ,  line ,  0 ) ;   
			
		
	
		
			
				
					    update_lead ( s ,  radar_state ,  line ,  1 ) ;   
			
		
	
		
			
				
					    std : : optional < cereal : : ModelDataV2 : : XYZTData : : Reader >  line ;   
			
		
	
		
			
				
					    if  ( sm . rcv_frame ( " modelV2 " )  >  0 )  {   
			
		
	
		
			
				
					      line  =  sm [ " modelV2 " ] . getModelV2 ( ) . getPosition ( ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    update_leads ( s ,  sm [ " radarState " ] . getRadarState ( ) ,  line ) ;   
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					  if  ( sm . updated ( " liveCalibration " ) )  {   
			
		
	
		
			
				
					    scene . world_objects_visible  =  true ;