mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-11-04 01:43:43 +08:00
lagless
This commit is contained in:
@@ -174,6 +174,12 @@ class AugmentedRoadView(CameraView):
|
||||
}
|
||||
self._radar_ranges_label = UnifiedLabel("", **radar_text_args)
|
||||
self._radar_counts_label = UnifiedLabel("none", **radar_text_args)
|
||||
self._radar_status = ("", "none")
|
||||
self._radar_layout_key: tuple[str, str, int] | None = None
|
||||
self._radar_range_width = 0
|
||||
self._radar_count_width = 36
|
||||
self._radar_status_width = 52
|
||||
self._radar_status_height = 42
|
||||
|
||||
self._fade_texture = gui_app.texture("icons_mici/onroad/onroad_fade.png")
|
||||
|
||||
@@ -191,12 +197,10 @@ class AugmentedRoadView(CameraView):
|
||||
status = ("", "radar detected\ntap to enable")
|
||||
else:
|
||||
status = format_radar_tracks_onroad_columns(live_tracks) if ui_state.sm.valid["liveTracks"] else ("", "none")
|
||||
self._radar_ranges_label.set_text(status[0])
|
||||
self._radar_counts_label.set_text(status[1])
|
||||
self._set_radar_status(status)
|
||||
elif not ui_state.sm.alive["liveTracks"]:
|
||||
self._radar_tracks_settings_prompt = False
|
||||
self._radar_ranges_label.set_text("")
|
||||
self._radar_counts_label.set_text("none")
|
||||
self._set_radar_status(("", "none"))
|
||||
|
||||
# update offroad label
|
||||
if ui_state.panda_type == log.PandaState.PandaType.unknown:
|
||||
@@ -206,6 +210,37 @@ class AugmentedRoadView(CameraView):
|
||||
else:
|
||||
self._offroad_label.set_text("start the car to\nuse sunnypilot")
|
||||
|
||||
def _set_radar_status(self, status: tuple[str, str]) -> None:
|
||||
if status == self._radar_status:
|
||||
return
|
||||
|
||||
self._radar_status = status
|
||||
self._radar_ranges_label.set_text(status[0])
|
||||
self._radar_counts_label.set_text(status[1])
|
||||
self._radar_layout_key = None
|
||||
|
||||
def _update_radar_status_layout(self) -> None:
|
||||
radar_horizontal_padding = 8
|
||||
radar_column_gap = 8
|
||||
radar_max_inner_width = int(self._content_rect.width - 40)
|
||||
layout_key = (*self._radar_status, radar_max_inner_width)
|
||||
if layout_key == self._radar_layout_key:
|
||||
return
|
||||
|
||||
radar_range_max_width = radar_max_inner_width - 36 - radar_column_gap
|
||||
self._radar_ranges_label.get_content_height(radar_range_max_width)
|
||||
self._radar_counts_label.get_content_height(radar_max_inner_width)
|
||||
self._radar_range_width = int(np.ceil(self._radar_ranges_label.text_width))
|
||||
self._radar_count_width = max(36, int(np.ceil(self._radar_counts_label.text_width)))
|
||||
radar_status_inner_width = self._radar_range_width + self._radar_count_width + (radar_column_gap if self._radar_range_width else 0)
|
||||
self._radar_status_width = radar_status_inner_width + radar_horizontal_padding * 2
|
||||
self._radar_status_height = max(
|
||||
42,
|
||||
self._radar_ranges_label.get_content_height(max(self._radar_range_width, 1)) + 10,
|
||||
self._radar_counts_label.get_content_height(self._radar_count_width) + 10,
|
||||
)
|
||||
self._radar_layout_key = layout_key
|
||||
|
||||
def _handle_mouse_release(self, mouse_pos: MousePos):
|
||||
if (self._radar_tracks_settings_callback is not None and
|
||||
rl.check_collision_point_rec(mouse_pos, self._radar_status_rect)):
|
||||
@@ -256,37 +291,25 @@ class AugmentedRoadView(CameraView):
|
||||
|
||||
radar_horizontal_padding = 8
|
||||
radar_column_gap = 8
|
||||
radar_max_inner_width = int(self._content_rect.width - 40)
|
||||
radar_range_max_width = radar_max_inner_width - 36 - radar_column_gap
|
||||
self._radar_ranges_label.get_content_height(radar_range_max_width)
|
||||
self._radar_counts_label.get_content_height(radar_max_inner_width)
|
||||
radar_range_width = int(np.ceil(self._radar_ranges_label.text_width))
|
||||
radar_count_width = max(36, int(np.ceil(self._radar_counts_label.text_width)))
|
||||
radar_status_inner_width = radar_range_width + radar_count_width + (radar_column_gap if radar_range_width else 0)
|
||||
radar_status_width = radar_status_inner_width + radar_horizontal_padding * 2
|
||||
radar_status_height = max(
|
||||
42,
|
||||
self._radar_ranges_label.get_content_height(max(radar_range_width, 1)) + 10,
|
||||
self._radar_counts_label.get_content_height(radar_count_width) + 10,
|
||||
)
|
||||
self._update_radar_status_layout()
|
||||
self._radar_status_rect = rl.Rectangle(
|
||||
self._content_rect.x + self._content_rect.width - radar_status_width - 12,
|
||||
self._content_rect.x + self._content_rect.width - self._radar_status_width - 12,
|
||||
self._content_rect.y + 8,
|
||||
radar_status_width,
|
||||
radar_status_height,
|
||||
self._radar_status_width,
|
||||
self._radar_status_height,
|
||||
)
|
||||
radar_status_rect = self._radar_status_rect
|
||||
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
|
||||
self._radar_ranges_label.render(rl.Rectangle(
|
||||
radar_status_rect.x + radar_horizontal_padding,
|
||||
radar_status_rect.y + 5,
|
||||
radar_range_width,
|
||||
self._radar_range_width,
|
||||
radar_status_rect.height - 10,
|
||||
))
|
||||
self._radar_counts_label.render(rl.Rectangle(
|
||||
radar_status_rect.x + radar_horizontal_padding + radar_range_width + (radar_column_gap if radar_range_width else 0),
|
||||
radar_status_rect.x + radar_horizontal_padding + self._radar_range_width + (radar_column_gap if self._radar_range_width else 0),
|
||||
radar_status_rect.y + 5,
|
||||
radar_count_width,
|
||||
self._radar_count_width,
|
||||
radar_status_rect.height - 10,
|
||||
))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user