autoverse-cli 0.5.0__tar.gz → 0.7.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/PKG-INFO +1 -1
  2. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/pyproject.toml +1 -1
  3. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/PKG-INFO +1 -1
  4. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/SOURCES.txt +4 -0
  5. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/app_version.py +1 -1
  6. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/avrs.py +8 -0
  7. autoverse_cli-0.7.0/src/avrs/requests/change_camera.py +11 -0
  8. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/code_booz.py +5 -1
  9. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/fault_injection.py +31 -0
  10. autoverse_cli-0.7.0/src/avrs/requests/get_object_config.py +18 -0
  11. autoverse_cli-0.7.0/src/avrs/requests/misc.py +11 -0
  12. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/request.py +2 -2
  13. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/reserve_mv_slot.py +4 -4
  14. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/teleport.py +3 -3
  15. autoverse_cli-0.7.0/src/avrs/requests/toggle_hud.py +11 -0
  16. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/vehicle_replay.py +167 -12
  17. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/LICENSE +0 -0
  18. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/README.md +0 -0
  19. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/setup.cfg +0 -0
  20. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/dependency_links.txt +0 -0
  21. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/entry_points.txt +0 -0
  22. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/requires.txt +0 -0
  23. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/autoverse_cli.egg-info/top_level.txt +0 -0
  24. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/__init__.py +0 -0
  25. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/argparse_help.py +0 -0
  26. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/can_tool.py +0 -0
  27. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/can_tool_util.py +0 -0
  28. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/cfg.py +0 -0
  29. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/launcher.py +0 -0
  30. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/launcher_util.py +0 -0
  31. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/demo.py +0 -0
  32. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/environment.py +0 -0
  33. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/list_sim_objects.py +0 -0
  34. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/log_path.py +0 -0
  35. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/move_to_landmark.py +0 -0
  36. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/npc.py +0 -0
  37. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/reset_to_track.py +0 -0
  38. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/restart.py +0 -0
  39. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/scenario_control.py +0 -0
  40. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/vd.py +0 -0
  41. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/requests/vehicle_input.py +0 -0
  42. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/simconfig.py +0 -0
  43. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/simconfig_util.py +0 -0
  44. {autoverse_cli-0.5.0 → autoverse_cli-0.7.0}/src/avrs/tests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autoverse-cli
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: The Autoverse CLI
5
5
  Author-email: Dan Kamrath <dan.kamrath@autonomalabs.com>
6
6
  License: # End-User License Agreement (EULA) of the Autonoma AutoVerse CLI
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "autoverse-cli"
3
- version = "0.5.0"
3
+ version = "0.7.0"
4
4
  dependencies = [
5
5
  "boto3",
6
6
  "cantools"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autoverse-cli
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: The Autoverse CLI
5
5
  Author-email: Dan Kamrath <dan.kamrath@autonomalabs.com>
6
6
  License: # End-User License Agreement (EULA) of the Autonoma AutoVerse CLI
@@ -19,12 +19,15 @@ src/avrs/launcher_util.py
19
19
  src/avrs/simconfig.py
20
20
  src/avrs/simconfig_util.py
21
21
  src/avrs/tests.py
22
+ src/avrs/requests/change_camera.py
22
23
  src/avrs/requests/code_booz.py
23
24
  src/avrs/requests/demo.py
24
25
  src/avrs/requests/environment.py
25
26
  src/avrs/requests/fault_injection.py
27
+ src/avrs/requests/get_object_config.py
26
28
  src/avrs/requests/list_sim_objects.py
27
29
  src/avrs/requests/log_path.py
30
+ src/avrs/requests/misc.py
28
31
  src/avrs/requests/move_to_landmark.py
29
32
  src/avrs/requests/npc.py
30
33
  src/avrs/requests/request.py
@@ -33,6 +36,7 @@ src/avrs/requests/reset_to_track.py
33
36
  src/avrs/requests/restart.py
34
37
  src/avrs/requests/scenario_control.py
35
38
  src/avrs/requests/teleport.py
39
+ src/avrs/requests/toggle_hud.py
36
40
  src/avrs/requests/vd.py
37
41
  src/avrs/requests/vehicle_input.py
38
42
  src/avrs/requests/vehicle_replay.py
@@ -2,7 +2,7 @@ import http.client
2
2
  import json
3
3
 
4
4
  def get_app_version():
5
- return '0.5.0'
5
+ return '0.7.0'
6
6
 
7
7
  def check_app_is_latest():
8
8
  pass
@@ -25,7 +25,11 @@ from avrs.requests.vehicle_replay import *
25
25
  from avrs.requests.scenario_control import *
26
26
  from avrs.requests.list_sim_objects import *
27
27
  from avrs.requests.fault_injection import *
28
+ from avrs.requests.change_camera import *
29
+ from avrs.requests.toggle_hud import *
28
30
  from avrs.simconfig import *
31
+ from avrs.requests.get_object_config import *
32
+ from avrs.requests.misc import *
29
33
 
30
34
 
31
35
  def get_version():
@@ -74,6 +78,10 @@ def main():
74
78
  AvrsScenarioRequests(sps, cfg)
75
79
  AvrsListSimObjectsRequest(sps, cfg)
76
80
  AvrsFaultInjectionRequests(sps, cfg)
81
+ AvrsChangeCameraRequest(sps, cfg)
82
+ AvrsToggleHudRequest(sps, cfg)
83
+ AvrsGetObjectConfigRequest(sps, cfg)
84
+ AvrsGetSimVersionRequest(sps, cfg)
77
85
 
78
86
  if os.environ.get('AVRS_WITH_DEMO', '0') == '1':
79
87
  AvrsDemoRequest(sps, cfg)
@@ -0,0 +1,11 @@
1
+ from avrs.requests.request import AvrsApiRequest
2
+
3
+ class AvrsChangeCameraRequest(AvrsApiRequest):
4
+ def __init__(self, parser, cfg):
5
+ AvrsApiRequest.__init__(self, parser, cfg, 'ChangeCamera', '')
6
+ psr = parser.add_parser('change-camera', help='changes the active camera on an object')
7
+ psr.set_defaults(func=self.send_request)
8
+
9
+ def get_request_body(self, args):
10
+ return {
11
+ }
@@ -28,6 +28,9 @@ class AvrsCodeBoozStartLogging(AvrsApiRequest):
28
28
  psr.add_argument(
29
29
  '--rate-hz', type=float, default=100.0, help='the rate in hz to log data')
30
30
 
31
+ psr.add_argument(
32
+ '--csv-only-xyv', action='store_true', help='if true, will only record the x, y and velocity magnitude to csv')
33
+
31
34
  psr.set_defaults(func=self.send_request)
32
35
 
33
36
  def get_request_body(self, args):
@@ -35,7 +38,8 @@ class AvrsCodeBoozStartLogging(AvrsApiRequest):
35
38
  'Action': 'Start',
36
39
  'FileName': args.out_file,
37
40
  'RateHz': args.rate_hz,
38
- 'Format': args.format
41
+ 'Format': args.format,
42
+ 'bCsvOnlyXyv': args.csv_only_xyv
39
43
  }
40
44
 
41
45
  class AvrsCodeBoozStopLogging(AvrsApiRequest):
@@ -9,6 +9,7 @@ class AvrsFaultInjectionRequests():
9
9
  AvrsGnssFaultRequest(sps, cfg)
10
10
  AvrsLidarFaultRequest(sps, cfg)
11
11
  AvrsImuFaultRequest(sps, cfg)
12
+ AvrsCanFaultRequest(sps, cfg)
12
13
 
13
14
  def add_base_injection_args(psr):
14
15
 
@@ -152,4 +153,34 @@ class AvrsLidarFaultRequest(AvrsApiRequest):
152
153
  'JsonBody': {
153
154
  'pointDensityReduction': args.point_density_reduction
154
155
  }
156
+ }
157
+
158
+ class AvrsCanFaultRequest(AvrsApiRequest):
159
+ def __init__(self, parser, cfg):
160
+ AvrsApiRequest.__init__(self, parser, cfg, 'FaultInjection', '')
161
+
162
+ psr = parser.add_parser(
163
+ 'can',
164
+ help='inject a can',
165
+ formatter_class=RawTextHelpFormatter)
166
+
167
+ psr.add_argument(
168
+ 'can_type',
169
+ choices = ['bsu', 'badenia', 'kistler', 'all'],
170
+ help='what type of the can interface you wish to apply the fault to')
171
+
172
+ add_base_injection_args(psr)
173
+ psr.set_defaults(func=self.send_request)
174
+
175
+ def get_request_body(self, args):
176
+ self.target_object_id = args.target
177
+ self.verbose = args.verbose
178
+ return {
179
+ 'faultType': 'CanFault',
180
+ 'duration': args.duration,
181
+ 'bIsDropout': True,
182
+ 'bIsFreeze': args.freeze,
183
+ 'JsonBody': {
184
+ 'canType': args.can_type
185
+ }
155
186
  }
@@ -0,0 +1,18 @@
1
+ from avrs.requests.request import AvrsApiRequest
2
+
3
+ class AvrsGetObjectConfigRequest(AvrsApiRequest):
4
+ def __init__(self, parser, cfg):
5
+ AvrsApiRequest.__init__(self, parser, cfg, 'GetObjectConfig', '')
6
+ psr = parser.add_parser('get-object-config', help='returns the JSON structure of an objects configuration')
7
+
8
+ psr.add_argument(
9
+ '--target',
10
+ default='ego',
11
+ help='the simulated object to return config for')
12
+
13
+ psr.set_defaults(func=self.send_request)
14
+
15
+ def get_request_body(self, args):
16
+ self.target_object_id = args.target
17
+ return {
18
+ }
@@ -0,0 +1,11 @@
1
+ from avrs.requests.request import AvrsApiRequest
2
+
3
+ class AvrsGetSimVersionRequest(AvrsApiRequest):
4
+ def __init__(self, parser, cfg):
5
+ AvrsApiRequest.__init__(self, parser, cfg, 'GetVersion', 0)
6
+ psr = parser.add_parser('get-sim-version', help='get the version of the currently running simulator')
7
+ psr.set_defaults(func=self.send_request)
8
+
9
+ def get_request_body(self, args):
10
+ return {
11
+ }
@@ -14,11 +14,11 @@ class AvrsApiRequest:
14
14
  self.verbose = False
15
15
 
16
16
  def get_request(self, args):
17
- body = json.dumps(self.get_request_body(args))
17
+ body = self.get_request_body(args)
18
18
  return {
19
19
  'TargetObjectId': self.target_object_id,
20
20
  'RequestType': self.request_type,
21
- 'bVerboseResponse': self.verbose,
21
+ 'bVerboseResponse': args.verbose or self.verbose,
22
22
  'RequestBody': body
23
23
  }
24
24
 
@@ -44,7 +44,7 @@ class ReserveMvSlot(AvrsApiRequest):
44
44
 
45
45
  psr.add_argument(
46
46
  '--badenia-can-name',
47
- default='vcan1',
47
+ default='vcan2',
48
48
  help='the name of the CAN interface to use for the bandanania CAN bus on the new vehicle')
49
49
 
50
50
  psr.add_argument(
@@ -75,9 +75,9 @@ class ReserveMvSlot(AvrsApiRequest):
75
75
  eav_init_pld = {
76
76
  'TypeName': 'Eav24Initializer',
77
77
  'Body': {
78
- 'BsuCanName': args.bsu_can_name,
79
- 'KistlerCanNam': args.kistler_can_name,
80
- 'BadeniaCanName': args.badenia_can_name,
78
+ 'bsuCanName': args.bsu_can_name,
79
+ 'kistlerCanNam': args.kistler_can_name,
80
+ 'badeniaCanName': args.badenia_can_name,
81
81
  'bHudEnabled': not args.disable_hud,
82
82
  'bEnableLidar': args.enable_lidar,
83
83
  'bEnableCameraSensor': args.enable_camera_sensor
@@ -4,9 +4,9 @@ class Teleport(AvrsApiRequest):
4
4
  def __init__(self, parser, cfg):
5
5
  AvrsApiRequest.__init__(self, parser, cfg, 'Teleport', "Ego")
6
6
  psr = parser.add_parser('teleport', help='Teleports the car to the given x,y,z in either enu or lla.')
7
- psr.add_argument('x', type=float, help='new x position')
8
- psr.add_argument('y', type=float, help='new y position')
9
- psr.add_argument('z', type=float, help='new z position')
7
+ psr.add_argument('x', type=float, help='new x position (NED meters)')
8
+ psr.add_argument('y', type=float, help='new y position (NED meters)')
9
+ psr.add_argument('z', type=float, help='new z position (NED meters)')
10
10
  #psr.add_argument('nav', help='lla or enu coordinate system.', nargs=1, choices=('lla', 'enu'))
11
11
  psr.set_defaults(func=self.send_request)
12
12
 
@@ -0,0 +1,11 @@
1
+ from avrs.requests.request import AvrsApiRequest
2
+
3
+ class AvrsToggleHudRequest(AvrsApiRequest):
4
+ def __init__(self, parser, cfg):
5
+ AvrsApiRequest.__init__(self, parser, cfg, 'ToggleHud', 'Ego')
6
+ psr = parser.add_parser('toggle-hud', help='toggles the HUD on or off')
7
+ psr.set_defaults(func=self.send_request)
8
+
9
+ def get_request_body(self, args):
10
+ return {
11
+ }
@@ -1,3 +1,4 @@
1
+ import random
1
2
  from avrs.requests.request import AvrsApiRequest
2
3
  from argparse import RawDescriptionHelpFormatter
3
4
  from argparse import RawTextHelpFormatter
@@ -9,6 +10,7 @@ class AvrsVehicleReplayRequests():
9
10
  SpawnReplayVehicle(sps, cfg)
10
11
  StartVehicleReplayRecording(sps, cfg)
11
12
  StopVehicleReplayRecording(sps, cfg)
13
+ DespawnReplayVehicle(sps, cfg)
12
14
 
13
15
  class SpawnReplayVehicle(AvrsApiRequest):
14
16
  def __init__(self, parser, cfg):
@@ -23,7 +25,7 @@ class SpawnReplayVehicle(AvrsApiRequest):
23
25
 
24
26
  psr.add_argument(
25
27
  '--name',
26
- default='npc0',
28
+ default='',
27
29
  help='name of the replay vehicle to spawn')
28
30
 
29
31
  psr.add_argument(
@@ -71,6 +73,27 @@ class SpawnReplayVehicle(AvrsApiRequest):
71
73
  action='store_true',
72
74
  help='if set, the npc will begin moving immediately')
73
75
 
76
+ psr.add_argument(
77
+ '--count',
78
+ type=int,
79
+ default=1,
80
+ help='the number of npcs to spawn (only works with automatic name)')
81
+
82
+ psr.add_argument(
83
+ '--enable-front-lidar',
84
+ action='store_true',
85
+ help='if set, will enable the front lidar on the replay vehicle')
86
+
87
+ psr.add_argument(
88
+ '--enable-left-lidar',
89
+ action='store_true',
90
+ help='if set, will enable the left lidar on the replay vehicle')
91
+
92
+ psr.add_argument(
93
+ '--enable-right-lidar',
94
+ action='store_true',
95
+ help='if set, will enable the right lidar on the replay vehicle')
96
+
74
97
  # psr.add_argument(
75
98
  # '--enable-sensors',
76
99
  # type=bool,
@@ -84,6 +107,9 @@ class SpawnReplayVehicle(AvrsApiRequest):
84
107
 
85
108
  psr.set_defaults(func=self.send_request)
86
109
 
110
+ def send_request(self, args):
111
+ for i in range(args.count):
112
+ self.send_http_request(args)
87
113
 
88
114
  def get_request_body(self, args):
89
115
 
@@ -108,39 +134,140 @@ class SpawnReplayVehicle(AvrsApiRequest):
108
134
  "bEnableKistlerCan": False,
109
135
  "bEnableBadeniaCan": False,
110
136
  "bHudEnabled": False,
111
- "bLidarEnabled": False,
137
+ "bLidarEnabled": True,
112
138
  "bCameraEnabled": False,
113
139
  "bPublishInputs": False,
114
140
  "bPublishGroundTruth": False
115
141
  }
116
142
 
143
+ lidar_front_pld = {
144
+ 'componentConfig': {
145
+ 'instanceName': 'lidar_front'
146
+ },
147
+ 'sensorDesc': {
148
+ 'frame': 'lidar_front',
149
+ 'leverarm': {
150
+ 'translation': {
151
+ 'x': 85,
152
+ 'y': 0,
153
+ 'z': 73
154
+ },
155
+ 'translationUnits': 'centimeters',
156
+ 'rotation': {
157
+ 'pitch': 0,
158
+ 'yaw': 0,
159
+ 'roll': 0
160
+ },
161
+ 'rotationUnits': 'degrees'
162
+ },
163
+ 'dataStream': {
164
+ 'streamName': 'lidar_front/points',
165
+ 'rateHz': 15
166
+ }
167
+ }
168
+ }
169
+
170
+ lidar_left_pld = {
171
+ 'componentConfig': {
172
+ 'instanceName': 'lidar_left'
173
+ },
174
+ 'sensorDesc': {
175
+ 'frame': 'lidar_left',
176
+ 'leverarm': {
177
+ 'translation': {
178
+ 'x': 15,
179
+ 'y': -20,
180
+ 'z': 82
181
+ },
182
+ 'translationUnits': 'centimeters',
183
+ 'rotation': {
184
+ 'pitch': 0,
185
+ 'yaw': 240,
186
+ 'roll': 0
187
+ },
188
+ 'rotationUnits': 'degrees'
189
+ },
190
+ 'dataStream': {
191
+ 'streamName': 'lidar_left/points',
192
+ 'rateHz': 15
193
+ }
194
+ }
195
+ }
196
+
197
+ lidar_right_pld = {
198
+ 'componentConfig': {
199
+ 'instanceName': 'lidar_right'
200
+ },
201
+ 'sensorDesc': {
202
+ 'frame': 'lidar_right',
203
+ 'leverarm': {
204
+ 'translation': {
205
+ 'x': 15,
206
+ 'y': 20,
207
+ 'z': 82
208
+ },
209
+ 'translationUnits': 'centimeters',
210
+ 'rotation': {
211
+ 'pitch': 0,
212
+ 'yaw': 120,
213
+ 'roll': 0
214
+ },
215
+ 'rotationUnits': 'degrees'
216
+ },
217
+ 'dataStream': {
218
+ 'streamName': 'lidar_right/points',
219
+ 'rateHz': 15
220
+ }
221
+ }
222
+ }
223
+
117
224
  plds = [
118
225
  {
119
- 'TypeName': 'WheeledVehicleReplayIpd',
120
- 'Body': replay_ipd
226
+ 'typeName': 'WheeledVehicleReplayIpd',
227
+ 'body': replay_ipd
121
228
  },
122
229
  {
123
- 'TypeName': 'Eav24Initializer',
124
- 'Body': eav_init_pld
230
+ 'typeName': 'Eav24Initializer',
231
+ 'body': eav_init_pld
232
+ },
233
+ {
234
+ 'typeName': 'GenericLidarIpd',
235
+ 'bEnabled': args.enable_front_lidar,
236
+ 'body': lidar_front_pld
237
+ },
238
+ {
239
+ 'typeName': 'GenericLidarIpd',
240
+ 'bEnabled': args.enable_left_lidar,
241
+ 'body': lidar_left_pld
242
+ },
243
+ {
244
+ 'typeName': 'GenericLidarIpd',
245
+ 'bEnabled': args.enable_right_lidar,
246
+ 'body': lidar_right_pld
125
247
  }
126
248
  ]
127
249
 
128
250
  if args.with_view_cameras:
129
251
  plds.append(
130
252
  {
131
- 'TypeName': 'InitializerTemplates',
132
- 'Body': {
133
- 'Templates': [
253
+ 'typeName': 'InitializerTemplates',
254
+ 'body': {
255
+ 'templates': [
134
256
  {
135
- 'PayloadType': 'SimViewTargetIpd',
136
- 'PayloadSpec': 'DefaultCarCams'
257
+ 'payloadType': 'SimViewTargetIpd',
258
+ 'payloadSpec': 'DefaultCarCams'
137
259
  }
138
260
  ]
139
261
  }
140
262
  })
141
263
 
264
+ # Create time based name if not specified
265
+ name = args.name
266
+ if name == '':
267
+ name = 'npc_{}'.format(random.randint(0, 100000))
268
+
142
269
  return {
143
- 'Name': args.name,
270
+ 'Name': name,
144
271
  'Type': args.vehicle_type,
145
272
  'Location': {},
146
273
  'Rotation': {},
@@ -189,3 +316,31 @@ class StopVehicleReplayRecording(AvrsApiRequest):
189
316
  return {
190
317
  'recordAction': 'stop',
191
318
  }
319
+
320
+ class DespawnReplayVehicle(AvrsApiRequest):
321
+ def __init__(self, parser, cfg):
322
+ AvrsApiRequest.__init__(self, parser, cfg, 'DespawnObject', 'Ego')
323
+ psr = parser.add_parser(
324
+ 'despawn', help='despawn a replay vehicle or all replay vehicles', formatter_class=RawTextHelpFormatter)
325
+
326
+ psr.add_argument(
327
+ '--name',
328
+ default='',
329
+ help='name of the replay vehicle to despawn')
330
+
331
+ psr.add_argument(
332
+ '--all',
333
+ action='store_true',
334
+ help='if set, will despawn all replay vehicles')
335
+
336
+ psr.set_defaults(func=self.send_request)
337
+
338
+
339
+ def get_request_body(self, args):
340
+ self.target_object_id = args.name
341
+ tags = ["Npc"] if args.all else []
342
+
343
+ return {
344
+ 'tags': tags,
345
+ 'bMatchAnyTag': True
346
+ }
File without changes
File without changes
File without changes