@ -142,7 +142,7 @@ static void ui_draw_lane_line(UIState *s, const model_path_vertices_data *pvd, N 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  update_track_data ( UIState  * s ,  bool  is_mpc ,  track_vertices_data  * pvd )  {  
			
		
	
		
			
				
					  const  UIScene  * scene  =  & s - > scene ;   
			
		
	
		
			
				
					  const  PathData  path =  scene - > model . path ;   
			
		
	
		
			
				
					  const  float  * points =  scene - > path_points ;   
			
		
	
		
			
				
					  const  float  * mpc_x_coords  =  & scene - > mpc_x [ 0 ] ;   
			
		
	
		
			
				
					  const  float  * mpc_y_coords  =  & scene - > mpc_y [ 0 ] ;   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -150,6 +150,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd) 
			
		
	
		
			
				
					  float  lead_d  =  scene - > lead_data [ 0 ] . getDRel ( ) * 2. ;   
			
		
	
		
			
				
					  float  path_height  =  is_mpc ? ( lead_d > 5. ) ? fmin ( lead_d ,  25. ) - fmin ( lead_d * 0.35 ,  10. ) : 20.   
			
		
	
		
			
				
					                            : ( lead_d > 0. ) ? fmin ( lead_d ,  50. ) - fmin ( lead_d * 0.35 ,  10. ) : 49. ;   
			
		
	
		
			
				
					  path_height  =  fmin ( path_height ,  scene - > model . getPath ( ) . getValidLen ( ) ) ;   
			
		
	
		
			
				
					  pvd - > cnt  =  0 ;   
			
		
	
		
			
				
					  // left side up
   
			
		
	
		
			
				
					  for  ( int  i = 0 ;  i < = path_height ;  i + + )  {   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -160,7 +161,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd) 
			
		
	
		
			
				
					      py  =  mpc_y_coords [ i ]  -  off ;   
			
		
	
		
			
				
					    }  else  {   
			
		
	
		
			
				
					      px  =  lerp ( i + 1.0 ,  i ,  i / 100.0 ) ;   
			
		
	
		
			
				
					      py  =  path . p oints [ i ]  -  off ;   
			
		
	
		
			
				
					      py  =  points [ i ]  -  off ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    vec4  p_car_space  =  ( vec4 ) { { px ,  py ,  0. ,  1. } } ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -182,7 +183,7 @@ static void update_track_data(UIState *s, bool is_mpc, track_vertices_data *pvd) 
			
		
	
		
			
				
					      py  =  mpc_y_coords [ i ]  +  off ;   
			
		
	
		
			
				
					    }  else  {   
			
		
	
		
			
				
					      px  =  lerp ( i + 1.0 ,  i ,  i / 100.0 ) ;   
			
		
	
		
			
				
					      py  =  path . p oints [ i ]  +  off ;   
			
		
	
		
			
				
					      py  =  points [ i ]  +  off ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    vec4  p_car_space  =  ( vec4 ) { { px ,  py ,  0. ,  1. } } ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -207,7 +208,6 @@ static void update_all_track_data(UIState *s) { 
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  ui_draw_track ( UIState  * s ,  bool  is_mpc ,  track_vertices_data  * pvd )  {  
			
		
	
		
			
				
					 if  ( pvd - > cnt  = =  0 )  return ;   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -302,13 +302,12 @@ static void update_lane_line_data(UIState *s, const float *points, float off, mo 
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  update_all_lane_lines_data ( UIState  * s ,  const  PathData  & path ,  model_path_vertices_data  * pstart )  {  
			
		
	
		
			
				
					  update_lane_line_data ( s ,  path . points ,  0.025 * path . prob ,  pstart ,  path . validLen ) ;   
			
		
	
		
			
				
					  float  var  =  fmin ( path . std ,  0.7 ) ;   
			
		
	
		
			
				
					  update_lane_line_data ( s ,  path . points ,  var ,  pstart  +  1 ,  path . validLen ) ;   
			
		
	
		
			
				
					static  void  update_all_lane_lines_data ( UIState  * s ,  const  cereal : : ModelData : : PathData : : Reader  & path ,  const  float  * points ,  model_path_vertices_data  * pstart )  {  
			
		
	
		
			
				
					  update_lane_line_data ( s ,  points ,  0.025 * path . getProb ( ) ,  pstart ,  path . getValidLen ( ) ) ;   
			
		
	
		
			
				
					  update_lane_line_data ( s ,  points ,  fmin ( path . getStd ( ) ,  0.7 ) ,  pstart  +  1 ,  path . getValidLen ( ) ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  ui_draw_lane ( UIState  * s ,  const  PathData  * path , model_path_vertices_data  * pstart ,  NVGcolor  color )  {  
			
		
	
		
			
				
					static  void  ui_draw_lane ( UIState  * s ,   model_path_vertices_data  * pstart ,  NVGcolor  color )  {  
			
		
	
		
			
				
					  ui_draw_lane_line ( s ,  pstart ,  color ) ;   
			
		
	
		
			
				
					  color . a  / =  25 ;   
			
		
	
		
			
				
					  ui_draw_lane_line ( s ,  pstart  +  1 ,  color ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -318,20 +317,18 @@ static void ui_draw_vision_lanes(UIState *s) { 
			
		
	
		
			
				
					  const  UIScene  * scene  =  & s - > scene ;   
			
		
	
		
			
				
					  model_path_vertices_data  * pvd  =  & s - > model_path_vertices [ 0 ] ;   
			
		
	
		
			
				
					  if ( s - > sm - > updated ( " model " ) )  {   
			
		
	
		
			
				
					    update_all_lane_lines_data ( s ,  scene - > model . left_lane ,  pvd ) ;   
			
		
	
		
			
				
					    update_all_lane_lines_data ( s ,  scene - > model . right_lane ,  pvd  +  MODEL_LANE_PATH_CNT ) ;   
			
		
	
		
			
				
					    update_all_lane_lines_data ( s ,  scene - > model . getLeftLane ( ) ,  scene - > left_lane_points  ,  pvd ) ;   
			
		
	
		
			
				
					    update_all_lane_lines_data ( s ,  scene - > model . getRightLane ( ) ,  scene - > right_lane_points  ,  pvd  +  MODEL_LANE_PATH_CNT ) ;   
			
		
	
		
			
				
					  }   
			
		
	
		
			
				
					  // Draw left lane edge
   
			
		
	
		
			
				
					  ui_draw_lane (   
			
		
	
		
			
				
					      s ,  & scene - > model . left_lane ,   
			
		
	
		
			
				
					      pvd ,   
			
		
	
		
			
				
					      nvgRGBAf ( 1.0 ,  1.0 ,  1.0 ,  scene - > model . left_lane . prob ) ) ;   
			
		
	
		
			
				
					      s ,  pvd ,   
			
		
	
		
			
				
					      nvgRGBAf ( 1.0 ,  1.0 ,  1.0 ,  scene - > model . getLeftLane ( ) . getProb ( ) ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  // Draw right lane edge
   
			
		
	
		
			
				
					  ui_draw_lane (   
			
		
	
		
			
				
					      s ,  & scene - > model . right_lane ,   
			
		
	
		
			
				
					      pvd  +  MODEL_LANE_PATH_CNT ,   
			
		
	
		
			
				
					      nvgRGBAf ( 1.0 ,  1.0 ,  1.0 ,  scene - > model . right_lane . prob ) ) ;   
			
		
	
		
			
				
					      s ,  pvd  +  MODEL_LANE_PATH_CNT ,   
			
		
	
		
			
				
					      nvgRGBAf ( 1.0 ,  1.0 ,  1.0 ,  scene - > model . getRightLane ( ) . getProb ( ) ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  if ( s - > sm - > updated ( " radarState " ) )  {   
			
		
	
		
			
				
					    update_all_track_data ( s ) ;