| 79 | # ============================================================================== |
| 80 | |
| 81 | class WorldSR(World): |
| 82 | |
| 83 | restarted = False |
| 84 | |
| 85 | def restart(self): |
| 86 | |
| 87 | if self.restarted: |
| 88 | return |
| 89 | self.restarted = True |
| 90 | |
| 91 | self.player_max_speed = 1.589 |
| 92 | self.player_max_speed_fast = 3.713 |
| 93 | |
| 94 | # Keep same camera config if the camera manager exists. |
| 95 | cam_index = self.camera_manager.index if self.camera_manager is not None else 0 |
| 96 | cam_pos_index = self.camera_manager.transform_index if self.camera_manager is not None else 0 |
| 97 | |
| 98 | # Get the ego vehicle |
| 99 | while self.player is None: |
| 100 | print("Waiting for the ego vehicle...") |
| 101 | time.sleep(1) |
| 102 | possible_vehicles = self.world.get_actors().filter('vehicle.*') |
| 103 | for vehicle in possible_vehicles: |
| 104 | if vehicle.attributes['role_name'] == "hero": |
| 105 | print("Ego vehicle found") |
| 106 | self.player = vehicle |
| 107 | break |
| 108 | |
| 109 | self.player_name = self.player.type_id |
| 110 | |
| 111 | # Set up the sensors. |
| 112 | self.collision_sensor = CollisionSensor(self.player, self.hud) |
| 113 | self.lane_invasion_sensor = LaneInvasionSensor(self.player, self.hud) |
| 114 | self.gnss_sensor = GnssSensor(self.player) |
| 115 | self.imu_sensor = IMUSensor(self.player) |
| 116 | self.camera_manager = CameraManager(self.player, self.hud, self._gamma) |
| 117 | self.camera_manager.transform_index = cam_pos_index |
| 118 | self.camera_manager.set_sensor(cam_index, notify=False) |
| 119 | actor_type = get_actor_display_name(self.player) |
| 120 | self.hud.notification(actor_type) |
| 121 | |
| 122 | def tick(self, clock): |
| 123 | if len(self.world.get_actors().filter(self.player_name)) < 1: |
| 124 | return False |
| 125 | |
| 126 | self.hud.tick(self, clock) |
| 127 | return True |
| 128 | |
| 129 | # ============================================================================== |
| 130 | # -- game_loop() --------------------------------------------------------------- |