mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
More efficiently search viewports
This commit is contained in:
@@ -159,8 +159,9 @@ namespace OpenRCT2::Audio
|
||||
uint8_t rotation = GetCurrentRotation();
|
||||
auto pos2 = Translate3DTo2DWithZ(rotation, location);
|
||||
|
||||
Viewport* viewport = nullptr;
|
||||
while ((viewport = WindowGetPreviousViewport(viewport)) != nullptr)
|
||||
// Get all active viewports
|
||||
auto viewports = WindowGetActiveViewports();
|
||||
for (auto* viewport : viewports)
|
||||
{
|
||||
if (viewport->flags & VIEWPORT_FLAG_SOUND_ON)
|
||||
{
|
||||
|
||||
@@ -916,6 +916,18 @@ static constexpr float kWindowScrollLocations[][2] = {
|
||||
});
|
||||
}
|
||||
|
||||
std::vector<Viewport*> WindowGetActiveViewports()
|
||||
{
|
||||
std::vector<Viewport*> viewports;
|
||||
WindowVisitEach([&viewports](WindowBase* w) {
|
||||
if (w->viewport != nullptr && !(w->flags & WF_DEAD))
|
||||
{
|
||||
viewports.push_back(w->viewport);
|
||||
}
|
||||
});
|
||||
return viewports;
|
||||
}
|
||||
|
||||
Viewport* WindowGetPreviousViewport(Viewport* current)
|
||||
{
|
||||
bool foundPrevious = (current == nullptr);
|
||||
|
||||
@@ -333,6 +333,7 @@ namespace OpenRCT2
|
||||
|
||||
void TextinputCancel();
|
||||
|
||||
std::vector<Viewport*> WindowGetActiveViewports();
|
||||
Viewport* WindowGetPreviousViewport(Viewport* current);
|
||||
void WindowInitAll();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user