multimodalsim-viewer 0.0.3__py3-none-any.whl → 0.1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- multimodalsim_viewer/common/environments/.env +2 -0
- multimodalsim_viewer/common/utils.py +11 -48
- multimodalsim_viewer/models/__init__.py +0 -0
- multimodalsim_viewer/models/environment.py +70 -0
- multimodalsim_viewer/models/leg.py +194 -0
- multimodalsim_viewer/models/passenger.py +148 -0
- multimodalsim_viewer/models/serializable.py +43 -0
- multimodalsim_viewer/models/simulation_information.py +84 -0
- multimodalsim_viewer/models/state.py +44 -0
- multimodalsim_viewer/models/stop.py +114 -0
- multimodalsim_viewer/models/update.py +616 -0
- multimodalsim_viewer/models/vehicle.py +151 -0
- multimodalsim_viewer/server/{simulation_visualization_data_collector.py → data_collector.py} +185 -198
- multimodalsim_viewer/server/data_manager.py +567 -0
- multimodalsim_viewer/server/http_routes.py +4 -7
- multimodalsim_viewer/server/log_manager.py +2 -2
- multimodalsim_viewer/server/server.py +8 -10
- multimodalsim_viewer/server/simulation.py +4 -5
- multimodalsim_viewer/server/simulation_manager.py +22 -23
- multimodalsim_viewer/ui/static/environment.json +2 -0
- multimodalsim_viewer/ui/static/index.html +2 -2
- multimodalsim_viewer/ui/static/{main-LUPJCMAF.js → main-EAYQBWLP.js} +173 -173
- multimodalsim_viewer/ui/static/scripts/load-environment.script.js +1 -1
- multimodalsim_viewer/ui/static/styles-257KETL3.css +1 -0
- {multimodalsim_viewer-0.0.3.dist-info → multimodalsim_viewer-0.1.0.0.dist-info}/METADATA +6 -12
- multimodalsim_viewer-0.1.0.0.dist-info/RECORD +53 -0
- multimodalsim_viewer/server/simulation_visualization_data_model.py +0 -1570
- multimodalsim_viewer/ui/static/styles-KU7LTPET.css +0 -1
- multimodalsim_viewer-0.0.3.dist-info/RECORD +0 -43
- {multimodalsim_viewer-0.0.3.dist-info → multimodalsim_viewer-0.1.0.0.dist-info}/WHEEL +0 -0
- {multimodalsim_viewer-0.0.3.dist-info → multimodalsim_viewer-0.1.0.0.dist-info}/entry_points.txt +0 -0
- {multimodalsim_viewer-0.0.3.dist-info → multimodalsim_viewer-0.1.0.0.dist-info}/top_level.txt +0 -0
multimodalsim_viewer/server/{simulation_visualization_data_collector.py → data_collector.py}
RENAMED
@@ -35,27 +35,23 @@ from socketio import Client
|
|
35
35
|
|
36
36
|
from multimodalsim_viewer.common.utils import (
|
37
37
|
HOST,
|
38
|
+
NUMBER_OF_UPDATES_BETWEEN_STATES,
|
38
39
|
SERVER_PORT,
|
39
|
-
STATE_SAVE_STEP,
|
40
40
|
SimulationStatus,
|
41
41
|
build_simulation_id,
|
42
42
|
)
|
43
|
-
from multimodalsim_viewer.
|
44
|
-
from multimodalsim_viewer.
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
from multimodalsim_viewer.models.environment import VisualizedEnvironment
|
44
|
+
from multimodalsim_viewer.models.passenger import VisualizedPassenger
|
45
|
+
from multimodalsim_viewer.models.simulation_information import SimulationInformation
|
46
|
+
from multimodalsim_viewer.models.stop import VisualizedStop
|
47
|
+
from multimodalsim_viewer.models.update import (
|
48
|
+
PassengerUpdate,
|
49
|
+
StatisticsUpdate,
|
50
50
|
Update,
|
51
|
-
|
52
|
-
VehicleStatusUpdate,
|
53
|
-
VehicleStopsUpdate,
|
54
|
-
VisualizedEnvironment,
|
55
|
-
VisualizedPassenger,
|
56
|
-
VisualizedStop,
|
57
|
-
VisualizedVehicle,
|
51
|
+
VehicleUpdate,
|
58
52
|
)
|
53
|
+
from multimodalsim_viewer.models.vehicle import VisualizedVehicle
|
54
|
+
from multimodalsim_viewer.server.data_manager import SimulationVisualizationDataManager
|
59
55
|
|
60
56
|
|
61
57
|
# MARK: Data Collector
|
@@ -255,11 +251,7 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
255
251
|
if current_event is None:
|
256
252
|
return
|
257
253
|
|
258
|
-
|
259
|
-
register_log(self.simulation_id, message)
|
260
|
-
|
261
|
-
if self.is_connected:
|
262
|
-
self.sio.emit("log", (self.simulation_id, message))
|
254
|
+
self.process_event(current_event, env)
|
263
255
|
|
264
256
|
if (
|
265
257
|
self.last_statistics_update_time is None
|
@@ -267,10 +259,12 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
267
259
|
):
|
268
260
|
self.last_statistics_update_time = current_event.time
|
269
261
|
self.add_update(
|
270
|
-
|
271
|
-
|
272
|
-
|
262
|
+
StatisticsUpdate(
|
263
|
+
self.update_counter,
|
264
|
+
event_index if event_index is not None else -1,
|
265
|
+
current_event.name,
|
273
266
|
current_event.time,
|
267
|
+
self.data_analyzer.get_statistics(),
|
274
268
|
),
|
275
269
|
env,
|
276
270
|
)
|
@@ -279,8 +273,8 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
279
273
|
def add_update( # pylint: disable=too-many-branches, too-many-statements
|
280
274
|
self, update: Update, environment: Environment
|
281
275
|
) -> None:
|
282
|
-
update.
|
283
|
-
self.visualized_environment.
|
276
|
+
update.update_index = self.update_counter
|
277
|
+
self.visualized_environment.update_index = self.update_counter
|
284
278
|
|
285
279
|
if self.update_counter == 0:
|
286
280
|
# Add the simulation start time to the simulation information
|
@@ -327,41 +321,17 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
327
321
|
self.visualized_environment.estimated_end_time = estimated_end_time
|
328
322
|
|
329
323
|
# Save the state of the simulation every SAVE_STATE_STEP events before applying the update
|
330
|
-
if self.update_counter %
|
324
|
+
if self.update_counter % NUMBER_OF_UPDATES_BETWEEN_STATES == 0:
|
331
325
|
self.current_save_file_path = SimulationVisualizationDataManager.save_state(
|
332
326
|
self.simulation_id, self.visualized_environment
|
333
327
|
)
|
334
328
|
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
self.visualized_environment.
|
339
|
-
|
340
|
-
if data.polylines is not None:
|
341
|
-
self.update_polylines_if_needed(data)
|
342
|
-
elif update.update_type == UpdateType.UPDATE_PASSENGER_STATUS:
|
343
|
-
passenger = self.visualized_environment.get_passenger(update.data.passenger_id)
|
344
|
-
passenger.status = update.data.status
|
345
|
-
elif update.update_type == UpdateType.UPDATE_PASSENGER_LEGS:
|
346
|
-
passenger = self.visualized_environment.get_passenger(update.data.passenger_id)
|
347
|
-
legs_update: PassengerLegsUpdate = update.data
|
348
|
-
passenger.previous_legs = legs_update.previous_legs
|
349
|
-
passenger.next_legs = legs_update.next_legs
|
350
|
-
passenger.current_leg = legs_update.current_leg
|
351
|
-
elif update.update_type == UpdateType.UPDATE_VEHICLE_STATUS:
|
352
|
-
vehicle = self.visualized_environment.get_vehicle(update.data.vehicle_id)
|
353
|
-
vehicle.status = update.data.status
|
354
|
-
elif update.update_type == UpdateType.UPDATE_VEHICLE_STOPS:
|
355
|
-
vehicle = self.visualized_environment.get_vehicle(update.data.vehicle_id)
|
356
|
-
stops_update: VehicleStopsUpdate = update.data
|
357
|
-
vehicle.previous_stops = stops_update.previous_stops
|
358
|
-
vehicle.next_stops = stops_update.next_stops
|
359
|
-
vehicle.current_stop = stops_update.current_stop
|
360
|
-
if vehicle.polylines is not None:
|
329
|
+
update.apply(self.visualized_environment)
|
330
|
+
|
331
|
+
if isinstance(update, VehicleUpdate):
|
332
|
+
vehicle = self.visualized_environment.get_vehicle(update.vehicle_id)
|
333
|
+
if vehicle is not None:
|
361
334
|
self.update_polylines_if_needed(vehicle)
|
362
|
-
elif update.update_type == UpdateType.UPDATE_STATISTIC:
|
363
|
-
statistic_update: StatisticUpdate = update.data
|
364
|
-
self.visualized_environment.statistic = statistic_update.statistic
|
365
335
|
|
366
336
|
SimulationVisualizationDataManager.save_update(self.current_save_file_path, update)
|
367
337
|
|
@@ -372,6 +342,10 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
372
342
|
polylines = vehicle.polylines
|
373
343
|
stops = vehicle.all_stops
|
374
344
|
|
345
|
+
if polylines is None:
|
346
|
+
# No polylines to update
|
347
|
+
return
|
348
|
+
|
375
349
|
# A polyline needs to have at least 2 points
|
376
350
|
if len(stops) < 2:
|
377
351
|
return
|
@@ -410,49 +384,38 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
410
384
|
if len(polylines_to_save) > 0:
|
411
385
|
SimulationVisualizationDataManager.set_polylines(self.simulation_id, polylines_to_save)
|
412
386
|
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
387
|
+
if self.is_connected:
|
388
|
+
self.sio.emit(
|
389
|
+
"simulation-update-polylines-version",
|
390
|
+
self.simulation_id,
|
391
|
+
)
|
418
392
|
|
419
393
|
# MARK: +- Flush
|
420
394
|
def flush(self, environment) -> None:
|
421
395
|
for event in self.passenger_assignment_event_queue:
|
396
|
+
old_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
397
|
+
new_passenger = VisualizedPassenger.from_trip_and_environment(event.state_machine.owner, environment)
|
398
|
+
|
422
399
|
self.add_update(
|
423
|
-
|
424
|
-
UpdateType.UPDATE_PASSENGER_STATUS,
|
425
|
-
PassengerStatusUpdate.from_trip(
|
426
|
-
event.state_machine.owner,
|
427
|
-
),
|
428
|
-
event.time,
|
429
|
-
),
|
430
|
-
environment,
|
431
|
-
)
|
432
|
-
previous_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
433
|
-
self.add_update(
|
434
|
-
Update(
|
435
|
-
UpdateType.UPDATE_PASSENGER_LEGS,
|
436
|
-
PassengerLegsUpdate.from_trip_environment_and_previous_passenger(
|
437
|
-
event.state_machine.owner, environment, previous_passenger
|
438
|
-
),
|
439
|
-
event.time,
|
440
|
-
),
|
400
|
+
PassengerUpdate(self.update_counter, event.index, event.name, event.time, old_passenger, new_passenger),
|
441
401
|
environment,
|
442
402
|
)
|
443
403
|
|
444
404
|
for event in self.vehicle_notification_event_queue:
|
445
405
|
vehicle = event._VehicleNotification__vehicle # pylint: disable=protected-access
|
446
406
|
route = event._VehicleNotification__route # pylint: disable=protected-access
|
447
|
-
|
448
|
-
|
449
|
-
|
407
|
+
|
408
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
409
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
450
410
|
|
451
411
|
self.add_update(
|
452
|
-
|
453
|
-
|
454
|
-
|
412
|
+
VehicleUpdate(
|
413
|
+
self.update_counter,
|
414
|
+
event.index,
|
415
|
+
event.name,
|
455
416
|
event.time,
|
417
|
+
old_vehicle,
|
418
|
+
new_vehicle,
|
456
419
|
),
|
457
420
|
environment,
|
458
421
|
)
|
@@ -467,252 +430,276 @@ class SimulationVisualizationDataCollector(DataCollector): # pylint: disable=to
|
|
467
430
|
# MARK: +- Process Event
|
468
431
|
def process_event( # pylint: disable=too-many-branches, too-many-statements, too-many-return-statements
|
469
432
|
self, event: Event, environment: Environment
|
470
|
-
) ->
|
433
|
+
) -> None:
|
471
434
|
# In case that a queued event is not linked to EnvironmentIdle
|
472
435
|
if self.has_to_flush and event.time > self.last_queued_event_time:
|
473
436
|
self.flush(environment)
|
474
437
|
|
475
438
|
# Optimize
|
476
439
|
if isinstance(event, Optimize):
|
477
|
-
|
478
|
-
return f"{event.time} TODO Optimize"
|
440
|
+
return
|
479
441
|
|
480
442
|
# EnvironmentUpdate
|
481
443
|
if isinstance(event, EnvironmentUpdate):
|
482
|
-
|
483
|
-
return f"{event.time} TODO EnvironmentUpdate"
|
444
|
+
return
|
484
445
|
|
485
446
|
# EnvironmentIdle
|
486
447
|
if isinstance(event, EnvironmentIdle):
|
448
|
+
# Now that the optimisations are done, we can flush the queued events.
|
487
449
|
self.flush(environment)
|
488
|
-
|
450
|
+
|
451
|
+
return
|
489
452
|
|
490
453
|
# PassengerRelease
|
491
454
|
if isinstance(event, PassengerRelease):
|
492
|
-
|
455
|
+
old_passenger = self.visualized_environment.get_passenger(event.trip.id)
|
456
|
+
new_passenger = VisualizedPassenger.from_trip_and_environment(event.trip, environment)
|
457
|
+
|
493
458
|
self.add_update(
|
494
|
-
|
495
|
-
|
496
|
-
|
459
|
+
PassengerUpdate(
|
460
|
+
self.update_counter,
|
461
|
+
event.index,
|
462
|
+
event.name,
|
497
463
|
event.time,
|
464
|
+
old_passenger,
|
465
|
+
new_passenger,
|
498
466
|
),
|
499
467
|
environment,
|
500
468
|
)
|
501
|
-
|
469
|
+
|
470
|
+
return
|
502
471
|
|
503
472
|
# PassengerAssignment
|
504
473
|
if isinstance(event, PassengerAssignment):
|
505
474
|
self.passenger_assignment_event_queue.append(event)
|
475
|
+
|
506
476
|
self.last_queued_event_time = event.time
|
507
|
-
|
477
|
+
|
478
|
+
return
|
508
479
|
|
509
480
|
# PassengerReady
|
510
481
|
if isinstance(event, PassengerReady):
|
482
|
+
old_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
483
|
+
new_passenger = VisualizedPassenger.from_trip_and_environment(event.state_machine.owner, environment)
|
484
|
+
|
511
485
|
self.add_update(
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
),
|
486
|
+
PassengerUpdate(
|
487
|
+
self.update_counter,
|
488
|
+
event.index,
|
489
|
+
event.name,
|
517
490
|
event.time,
|
491
|
+
old_passenger,
|
492
|
+
new_passenger,
|
518
493
|
),
|
519
494
|
environment,
|
520
495
|
)
|
521
|
-
|
496
|
+
|
497
|
+
return
|
522
498
|
|
523
499
|
# PassengerToBoard
|
524
500
|
if isinstance(event, PassengerToBoard):
|
501
|
+
old_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
502
|
+
new_passenger = VisualizedPassenger.from_trip_and_environment(event.state_machine.owner, environment)
|
503
|
+
|
525
504
|
self.add_update(
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
),
|
531
|
-
event.time,
|
532
|
-
),
|
533
|
-
environment,
|
534
|
-
)
|
535
|
-
previous_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
536
|
-
self.add_update(
|
537
|
-
Update(
|
538
|
-
UpdateType.UPDATE_PASSENGER_LEGS,
|
539
|
-
PassengerLegsUpdate.from_trip_environment_and_previous_passenger(
|
540
|
-
event.state_machine.owner, environment, previous_passenger
|
541
|
-
),
|
505
|
+
PassengerUpdate(
|
506
|
+
self.update_counter,
|
507
|
+
event.index,
|
508
|
+
event.name,
|
542
509
|
event.time,
|
510
|
+
old_passenger,
|
511
|
+
new_passenger,
|
543
512
|
),
|
544
513
|
environment,
|
545
514
|
)
|
546
|
-
|
515
|
+
|
516
|
+
return
|
547
517
|
|
548
518
|
# PassengerAlighting
|
549
519
|
if isinstance(event, PassengerAlighting):
|
520
|
+
old_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
521
|
+
new_passenger = VisualizedPassenger.from_trip_and_environment(event.state_machine.owner, environment)
|
522
|
+
|
550
523
|
self.add_update(
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
),
|
556
|
-
event.time,
|
557
|
-
),
|
558
|
-
environment,
|
559
|
-
)
|
560
|
-
previous_passenger = self.visualized_environment.get_passenger(event.state_machine.owner.id)
|
561
|
-
self.add_update(
|
562
|
-
Update(
|
563
|
-
UpdateType.UPDATE_PASSENGER_LEGS,
|
564
|
-
PassengerLegsUpdate.from_trip_environment_and_previous_passenger(
|
565
|
-
event.state_machine.owner, environment, previous_passenger
|
566
|
-
),
|
524
|
+
PassengerUpdate(
|
525
|
+
self.update_counter,
|
526
|
+
event.index,
|
527
|
+
event.name,
|
567
528
|
event.time,
|
529
|
+
old_passenger,
|
530
|
+
new_passenger,
|
568
531
|
),
|
569
532
|
environment,
|
570
533
|
)
|
571
|
-
|
534
|
+
|
535
|
+
return
|
572
536
|
|
573
537
|
# VehicleWaiting
|
574
538
|
if isinstance(event, VehicleWaiting):
|
539
|
+
vehicle = event.state_machine.owner
|
540
|
+
route = event._VehicleWaiting__route # pylint: disable=protected-access
|
541
|
+
|
542
|
+
old_vehicle = self.visualized_environment.get_vehicle(event.state_machine.owner.id)
|
543
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
544
|
+
|
575
545
|
self.add_update(
|
576
|
-
|
577
|
-
|
578
|
-
|
546
|
+
VehicleUpdate(
|
547
|
+
self.update_counter,
|
548
|
+
event.index,
|
549
|
+
event.name,
|
579
550
|
event.time,
|
551
|
+
old_vehicle,
|
552
|
+
new_vehicle,
|
580
553
|
),
|
581
554
|
environment,
|
582
555
|
)
|
583
|
-
|
556
|
+
|
557
|
+
return
|
584
558
|
|
585
559
|
# VehicleBoarding
|
586
560
|
if isinstance(event, VehicleBoarding):
|
561
|
+
vehicle = event.state_machine.owner
|
562
|
+
route = event._VehicleBoarding__route # pylint: disable=protected-access
|
563
|
+
|
564
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
565
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
566
|
+
|
587
567
|
self.add_update(
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
),
|
568
|
+
VehicleUpdate(
|
569
|
+
self.update_counter,
|
570
|
+
event.index,
|
571
|
+
event.name,
|
593
572
|
event.time,
|
573
|
+
old_vehicle,
|
574
|
+
new_vehicle,
|
594
575
|
),
|
595
576
|
environment,
|
596
577
|
)
|
597
|
-
|
578
|
+
|
579
|
+
return
|
598
580
|
|
599
581
|
# VehicleDeparture
|
600
582
|
if isinstance(event, VehicleDeparture):
|
601
583
|
route = event._VehicleDeparture__route # pylint: disable=protected-access
|
602
584
|
vehicle = event.state_machine.owner
|
603
585
|
|
604
|
-
self.
|
605
|
-
|
606
|
-
UpdateType.UPDATE_VEHICLE_STATUS,
|
607
|
-
VehicleStatusUpdate.from_vehicle(
|
608
|
-
event.state_machine.owner,
|
609
|
-
),
|
610
|
-
event.time,
|
611
|
-
),
|
612
|
-
environment,
|
613
|
-
)
|
586
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
587
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
614
588
|
|
615
589
|
self.add_update(
|
616
|
-
|
617
|
-
|
618
|
-
|
590
|
+
VehicleUpdate(
|
591
|
+
self.update_counter,
|
592
|
+
event.index,
|
593
|
+
event.name,
|
619
594
|
event.time,
|
595
|
+
old_vehicle,
|
596
|
+
new_vehicle,
|
620
597
|
),
|
621
598
|
environment,
|
622
599
|
)
|
623
|
-
|
600
|
+
|
601
|
+
return
|
624
602
|
|
625
603
|
# VehicleArrival
|
626
604
|
if isinstance(event, VehicleArrival):
|
627
605
|
route = event._VehicleArrival__route # pylint: disable=protected-access
|
628
606
|
vehicle = event.state_machine.owner
|
629
607
|
|
630
|
-
self.
|
631
|
-
|
632
|
-
UpdateType.UPDATE_VEHICLE_STATUS,
|
633
|
-
VehicleStatusUpdate.from_vehicle(
|
634
|
-
event.state_machine.owner,
|
635
|
-
),
|
636
|
-
event.time,
|
637
|
-
),
|
638
|
-
environment,
|
639
|
-
)
|
608
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
609
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
640
610
|
|
641
611
|
self.add_update(
|
642
|
-
|
643
|
-
|
644
|
-
|
612
|
+
VehicleUpdate(
|
613
|
+
self.update_counter,
|
614
|
+
event.index,
|
615
|
+
event.name,
|
645
616
|
event.time,
|
617
|
+
old_vehicle,
|
618
|
+
new_vehicle,
|
646
619
|
),
|
647
620
|
environment,
|
648
621
|
)
|
649
622
|
|
650
|
-
return
|
623
|
+
return
|
651
624
|
|
652
625
|
# VehicleComplete
|
653
626
|
if isinstance(event, VehicleComplete):
|
627
|
+
vehicle = event.state_machine.owner
|
628
|
+
route = event._VehicleComplete__route # pylint: disable=protected-access
|
629
|
+
|
630
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
631
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
632
|
+
|
654
633
|
self.add_update(
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
),
|
634
|
+
VehicleUpdate(
|
635
|
+
self.update_counter,
|
636
|
+
event.index,
|
637
|
+
event.name,
|
660
638
|
event.time,
|
639
|
+
old_vehicle,
|
640
|
+
new_vehicle,
|
661
641
|
),
|
662
642
|
environment,
|
663
643
|
)
|
664
|
-
|
644
|
+
|
645
|
+
return
|
665
646
|
|
666
647
|
# VehicleReady
|
667
648
|
if isinstance(event, VehicleReady):
|
668
|
-
vehicle =
|
669
|
-
|
670
|
-
|
649
|
+
vehicle = event._VehicleReady__vehicle # pylint: disable=protected-access
|
650
|
+
route = event._VehicleReady__route # pylint: disable=protected-access
|
651
|
+
|
652
|
+
old_vehicle = self.visualized_environment.get_vehicle(vehicle.id)
|
653
|
+
new_vehicle = VisualizedVehicle.from_vehicle_and_route(vehicle, route)
|
654
|
+
|
671
655
|
self.add_update(
|
672
|
-
|
673
|
-
|
674
|
-
|
656
|
+
VehicleUpdate(
|
657
|
+
self.update_counter,
|
658
|
+
event.index,
|
659
|
+
event.name,
|
675
660
|
event.time,
|
661
|
+
old_vehicle,
|
662
|
+
new_vehicle,
|
676
663
|
),
|
677
664
|
environment,
|
678
665
|
)
|
679
|
-
|
666
|
+
|
667
|
+
return
|
680
668
|
|
681
669
|
# VehicleNotification
|
682
670
|
if isinstance(event, VehicleNotification):
|
683
671
|
self.vehicle_notification_event_queue.append(event)
|
672
|
+
|
684
673
|
self.last_queued_event_time = event.time
|
685
|
-
|
674
|
+
|
675
|
+
return
|
686
676
|
|
687
677
|
# VehicleBoarded
|
688
678
|
if isinstance(event, VehicleBoarded):
|
689
|
-
return
|
679
|
+
return
|
690
680
|
|
691
681
|
# VehicleAlighted
|
692
682
|
if isinstance(event, VehicleAlighted):
|
693
|
-
return
|
683
|
+
return
|
694
684
|
|
695
685
|
# VehicleUpdatePositionEvent
|
696
686
|
if isinstance(event, VehicleUpdatePositionEvent):
|
697
|
-
|
698
|
-
return f"{event.time} TODO VehicleUpdatePositionEvent"
|
687
|
+
return
|
699
688
|
|
700
689
|
# RecurrentTimeSyncEvent
|
701
690
|
if isinstance(event, RecurrentTimeSyncEvent):
|
702
|
-
|
703
|
-
return f"{event.time} TODO RecurrentTimeSyncEvent"
|
691
|
+
return
|
704
692
|
|
705
693
|
# Hold
|
706
694
|
if isinstance(event, Hold):
|
707
|
-
|
708
|
-
return f"{event.time} TODO Hold"
|
695
|
+
return
|
709
696
|
|
710
|
-
raise NotImplementedError(f"Event {event} not
|
697
|
+
raise NotImplementedError(f"Event {event.name} not handled by the data collector")
|
711
698
|
|
712
699
|
# MARK: +- Clean Up
|
713
700
|
def clean_up(self, env):
|
714
701
|
self.simulation_information.simulation_end_time = self.visualized_environment.timestamp
|
715
|
-
self.simulation_information.
|
702
|
+
self.simulation_information.last_update_index = self.visualized_environment.update_index
|
716
703
|
|
717
704
|
SimulationVisualizationDataManager.set_simulation_information(self.simulation_id, self.simulation_information)
|
718
705
|
|