MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / findBestViewportForEntity

Function findBestViewportForEntity

src/OpenLoco/src/Audio/VehicleAudio.cpp:83–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81 }
82
83 static Viewport* findBestViewportForEntity(const World::Pos3& position, EntityId headId)
84 {
85 auto vpPos = World::gameToScreen(position, WindowManager::getCurrentRotation());
86
87 auto main = WindowManager::getMainWindow();
88 if (main != nullptr && main->viewports[0] != nullptr)
89 {
90 if (main->savedView.isEntityView() && main->savedView.entityId == headId)
91 {
92 return main->viewports[0];
93 }
94 if (main->viewports[0]->contains(vpPos))
95 {
96 return main->viewports[0];
97 }
98 }
99
100 for (size_t i = 0; i < WindowManager::count(); i++)
101 {
102 auto w = WindowManager::get(i);
103 if (w->type == WindowType::main || w->type == WindowType::news)
104 {
105 continue;
106 }
107 auto viewport = w->viewports[0];
108 if (viewport == nullptr)
109 {
110 continue;
111 }
112 if (w->savedView.isEntityView() && w->savedView.entityId == headId)
113 {
114 return viewport;
115 }
116 if (viewport->contains(vpPos))
117 {
118 return viewport;
119 }
120 }
121
122 return nullptr;
123 }
124
125 static AudioAttributes getVehicleAudioAttributes(const Vehicles::VehicleBase& base, const Vehicles::VehicleSound& soundParams, const Viewport& viewport)
126 {

Callers 1

updateSingleVehicleSoundFunction · 0.85

Calls 7

gameToScreenFunction · 0.85
getCurrentRotationFunction · 0.85
getMainWindowFunction · 0.85
countFunction · 0.85
isEntityViewMethod · 0.80
getFunction · 0.50
containsMethod · 0.45

Tested by

no test coverage detected