mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-11 10:02:27 +01:00
Fix extra viewport invalidating every frame
This commit is contained in:
@@ -98,7 +98,7 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
|
|
||||||
viewport->flags |= VIEWPORT_FLAG_SOUND_ON | VIEWPORT_FLAG_INDEPEDENT_ROTATION;
|
viewport->flags |= VIEWPORT_FLAG_SOUND_ON | VIEWPORT_FLAG_INDEPEDENT_ROTATION;
|
||||||
|
|
||||||
WindowSetResize(*this, { WW, WH }, { WW, WH });
|
WindowSetResize(*this, { WW, WH }, { (ContextGetWidth() * 4) / 5, (ContextGetHeight() * 4) / 5 });
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnUpdate() override
|
void OnUpdate() override
|
||||||
@@ -107,14 +107,11 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
if (mainWindow == nullptr)
|
if (mainWindow == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (viewport != nullptr && viewport->flags != mainWindow->viewport->flags)
|
if (viewport != nullptr && viewport->flags != (mainWindow->viewport->flags | VIEWPORT_FLAG_INDEPEDENT_ROTATION))
|
||||||
{
|
{
|
||||||
viewport->flags = mainWindow->viewport->flags | VIEWPORT_FLAG_INDEPEDENT_ROTATION;
|
viewport->flags = mainWindow->viewport->flags | VIEWPORT_FLAG_INDEPEDENT_ROTATION;
|
||||||
Invalidate();
|
InvalidateWidget(WIDX_VIEWPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not sure how to invalidate part of the viewport that has changed, this will have to do for now
|
|
||||||
// widget_invalidate(*this, WIDX_VIEWPORT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnMouseUp(WidgetIndex widgetIndex) override
|
void OnMouseUp(WidgetIndex widgetIndex) override
|
||||||
@@ -220,17 +217,6 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
|
|
||||||
WindowBase* ViewportOpen()
|
WindowBase* ViewportOpen()
|
||||||
{
|
{
|
||||||
int32_t screenWidth = ContextGetWidth();
|
return GetWindowManager()->Create<ViewportWindow>(WindowClass::Viewport, 300, 300, WF_RESIZABLE);
|
||||||
int32_t screenHeight = ContextGetHeight();
|
|
||||||
int32_t width = (screenWidth / 2);
|
|
||||||
int32_t height = (screenHeight / 2);
|
|
||||||
|
|
||||||
auto* windowMgr = GetWindowManager();
|
|
||||||
auto* w = windowMgr->Create<ViewportWindow>(
|
|
||||||
WindowClass::Viewport, std::max(WW, width), std::max(WH, height), WF_RESIZABLE);
|
|
||||||
|
|
||||||
if (w != nullptr)
|
|
||||||
return w;
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
} // namespace OpenRCT2::Ui::Windows
|
} // namespace OpenRCT2::Ui::Windows
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ namespace OpenRCT2
|
|||||||
// rct2: 0x006E7A15
|
// rct2: 0x006E7A15
|
||||||
static void ViewportSetUndergroundFlag(int32_t underground, WindowBase* window, Viewport* viewport)
|
static void ViewportSetUndergroundFlag(int32_t underground, WindowBase* window, Viewport* viewport)
|
||||||
{
|
{
|
||||||
if (window->classification != WindowClass::MainWindow
|
if ((window->classification != WindowClass::MainWindow && window->classification != WindowClass::Viewport)
|
||||||
|| (window->classification == WindowClass::MainWindow && !window->viewport_smart_follow_sprite.IsNull()))
|
|| (window->classification == WindowClass::MainWindow && !window->viewport_smart_follow_sprite.IsNull()))
|
||||||
{
|
{
|
||||||
if (!underground)
|
if (!underground)
|
||||||
|
|||||||
Reference in New Issue
Block a user