MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / ViewportUpdateSmartFollowEntity

Function ViewportUpdateSmartFollowEntity

src/openrct2/interface/Viewport.cpp:636–677  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

634 }
635
636 void ViewportUpdateSmartFollowEntity(WindowBase* window)
637 {
638 auto entity = getGameState().entities.TryGetEntity(window->viewportSmartFollowSprite);
639 if (entity == nullptr || entity->type == EntityType::null)
640 {
641 window->viewportSmartFollowSprite = EntityId::GetNull();
642 window->viewportTargetSprite = EntityId::GetNull();
643 return;
644 }
645
646 switch (entity->type)
647 {
648 case EntityType::vehicle:
649 ViewportUpdateSmartFollowVehicle(window);
650 break;
651
652 case EntityType::guest:
653 {
654 auto* guest = entity->as<Guest>();
655 if (guest == nullptr)
656 {
657 return;
658 }
659 ViewportUpdateSmartFollowGuest(window, *guest);
660 break;
661 }
662 case EntityType::staff:
663 {
664 auto* staff = entity->as<Staff>();
665 if (staff == nullptr)
666 {
667 return;
668 }
669 ViewportUpdateSmartFollowStaff(window, *staff);
670 break;
671 }
672 default: // All other types don't need any "smart" following; steam particle, duck, money effect, etc.
673 window->focus = Focus(window->viewportSmartFollowSprite);
674 window->viewportTargetSprite = window->viewportSmartFollowSprite;
675 break;
676 }
677 }
678
679 void ViewportUpdateSmartFollowGuest(WindowBase* window, const Guest& peep)
680 {

Callers 1

ViewportUpdatePositionFunction · 0.85

Calls 5

FocusClass · 0.70
TryGetEntityMethod · 0.45

Tested by

no test coverage detected