diff --git a/selfdrive/ui/onroad/model_renderer.py b/selfdrive/ui/onroad/model_renderer.py index ab2b7aaefb..9f8e8b828c 100644 --- a/selfdrive/ui/onroad/model_renderer.py +++ b/selfdrive/ui/onroad/model_renderer.py @@ -56,6 +56,8 @@ class ModelRenderer(Widget): self._lead_vehicles = [LeadVehicle(), LeadVehicle()] self._path_offset_z = HEIGHT_INIT[0] + self._render_lead_indicator = False + # Initialize ModelPoints objects self._path = ModelPoints() self._lane_lines = [ModelPoints() for _ in range(4)] @@ -83,20 +85,9 @@ class ModelRenderer(Widget): self._car_space_transform = transform.astype(np.float32) self._transform_dirty = True - def _render(self, rect: rl.Rectangle): - sm = ui_state.sm - - # Check if data is up-to-date - if (sm.recv_frame["liveCalibration"] < ui_state.started_frame or - sm.recv_frame["modelV2"] < ui_state.started_frame): - return - - # Set up clipping region - self._clip_region = rl.Rectangle( - rect.x - CLIP_MARGIN, rect.y - CLIP_MARGIN, rect.width + 2 * CLIP_MARGIN, rect.height + 2 * CLIP_MARGIN - ) - + def _update_state(self): # Update state + sm = ui_state.sm self._experimental_mode = sm['selfdriveState'].experimentalMode live_calib = sm['liveCalibration'] @@ -108,7 +99,7 @@ class ModelRenderer(Widget): model = sm['modelV2'] radar_state = sm['radarState'] if sm.valid['radarState'] else None lead_one = radar_state.leadOne if radar_state else None - render_lead_indicator = self._longitudinal_control and radar_state is not None + self._render_lead_indicator = self._longitudinal_control and radar_state is not None # Update model data when needed model_updated = sm.updated['modelV2'] @@ -121,15 +112,28 @@ class ModelRenderer(Widget): return self._update_model(lead_one, path_x_array) - if render_lead_indicator: + if self._render_lead_indicator: self._update_leads(radar_state, path_x_array) self._transform_dirty = False + def _render(self, rect: rl.Rectangle): + sm = ui_state.sm + + # Check if data is up-to-date + if (sm.recv_frame["liveCalibration"] < ui_state.started_frame or + sm.recv_frame["modelV2"] < ui_state.started_frame): + return + + # Set up clipping region + self._clip_region = rl.Rectangle( + rect.x - CLIP_MARGIN, rect.y - CLIP_MARGIN, rect.width + 2 * CLIP_MARGIN, rect.height + 2 * CLIP_MARGIN + ) + # Draw elements self._draw_lane_lines() self._draw_path(sm) - if render_lead_indicator and radar_state: + if self._render_lead_indicator: self._draw_lead_indicator() def _update_raw_points(self, model):