Fix regression in game viewport DPI scale usage

#2976 809fd2653a
This commit is contained in:
Wojtek Figat
2025-03-18 20:07:30 +01:00
parent 8c857e6fa4
commit 9459eff58c
2 changed files with 7 additions and 4 deletions

View File

@@ -1514,7 +1514,8 @@ namespace FlaxEditor
var win = Windows.GameWin?.Root; var win = Windows.GameWin?.Root;
if (win?.RootWindow is WindowRootControl root) if (win?.RootWindow is WindowRootControl root)
{ {
pos = Float2.Round(Windows.GameWin.Viewport.PointFromScreen(pos) * root.DpiScale); pos = Windows.GameWin.Viewport.PointFromScreen(pos);
pos = Float2.Round(pos);
} }
else else
{ {
@@ -1527,7 +1528,8 @@ namespace FlaxEditor
var win = Windows.GameWin?.Root; var win = Windows.GameWin?.Root;
if (win?.RootWindow is WindowRootControl root) if (win?.RootWindow is WindowRootControl root)
{ {
pos = Float2.Round(Windows.GameWin.Viewport.PointToScreen(pos / root.DpiScale)); pos = Windows.GameWin.Viewport.PointToScreen(pos);
pos = Float2.Round(pos);
} }
else else
{ {
@@ -1559,6 +1561,7 @@ namespace FlaxEditor
else else
result = gameWin.Viewport.Size; result = gameWin.Viewport.Size;
result *= root.DpiScale;
result = Float2.Round(result); result = Float2.Round(result);
} }
} }

View File

@@ -74,7 +74,7 @@ Float2 Screen::ScreenToGameViewport(const Float2& screenPos)
return Editor::Managed->ScreenToGameViewport(screenPos); return Editor::Managed->ScreenToGameViewport(screenPos);
#else #else
auto win = Engine::MainWindow; auto win = Engine::MainWindow;
return win ? win->ScreenToClient(screenPos) : Float2::Minimum; return win ? win->ScreenToClient(screenPos) / win->GetDpiScale() : Float2::Minimum;
#endif #endif
} }
@@ -84,7 +84,7 @@ Float2 Screen::GameViewportToScreen(const Float2& viewportPos)
return Editor::Managed->GameViewportToScreen(viewportPos); return Editor::Managed->GameViewportToScreen(viewportPos);
#else #else
auto win = Engine::MainWindow; auto win = Engine::MainWindow;
return win ? win->ClientToScreen(viewportPos) : Float2::Minimum; return win ? win->ClientToScreen(viewportPos * win->GetDpiScale()) : Float2::Minimum;
#endif #endif
} }