Merge branch 'main' into main

This commit is contained in:
haløgen 2026-03-04 14:46:56 -05:00 committed by GitHub
commit b87774ab33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 26 additions and 154 deletions

View file

@ -481,7 +481,7 @@ void IUIScene_AbstractContainerMenu::onMouseTick()
#endif #endif
#ifdef _WINDOWS64 #ifdef _WINDOWS64
if (!g_KBMInput.IsMouseGrabbed() && g_KBMInput.IsKBMActive() && g_KBMInput.IsCursorHiddenForUI()) if (!g_KBMInput.IsMouseGrabbed() && g_KBMInput.IsKBMActive())
{ {
int deltaX = g_KBMInput.GetMouseDeltaX(); int deltaX = g_KBMInput.GetMouseDeltaX();
int deltaY = g_KBMInput.GetMouseDeltaY(); int deltaY = g_KBMInput.GetMouseDeltaY();

View file

@ -28,12 +28,6 @@ UIScene_AbstractContainerMenu::UIScene_AbstractContainerMenu(int iPad, UILayer *
ui.OverrideSFX(m_iPad,ACTION_MENU_DOWN,true); ui.OverrideSFX(m_iPad,ACTION_MENU_DOWN,true);
m_bIgnoreInput=false; m_bIgnoreInput=false;
#ifdef _WINDOWS64
m_bMouseDragSlider = false;
m_bHasMousePosition = false;
m_lastMouseX = 0;
m_lastMouseY = 0;
#endif
} }
UIScene_AbstractContainerMenu::~UIScene_AbstractContainerMenu() UIScene_AbstractContainerMenu::~UIScene_AbstractContainerMenu()
@ -90,8 +84,8 @@ void UIScene_AbstractContainerMenu::InitDataAssociations(int iPad, AbstractConta
void UIScene_AbstractContainerMenu::PlatformInitialize(int iPad, int startIndex) void UIScene_AbstractContainerMenu::PlatformInitialize(int iPad, int startIndex)
{ {
#ifdef _WINDOWS64 #ifdef _WINDOWS64
g_KBMInput.SetScreenCursorHidden(false); g_KBMInput.SetScreenCursorHidden(true);
g_KBMInput.SetCursorHiddenForUI(false); g_KBMInput.SetCursorHiddenForUI(true);
#endif #endif
m_labelInventory.init( app.GetString(IDS_INVENTORY) ); m_labelInventory.init( app.GetString(IDS_INVENTORY) );
@ -212,144 +206,14 @@ void UIScene_AbstractContainerMenu::tick()
{ {
UIScene::tick(); UIScene::tick();
#ifdef _WINDOWS64
bool mouseActive = (m_iPad == 0 && g_KBMInput.IsWindowFocused() && !g_KBMInput.IsMouseGrabbed() && g_KBMInput.IsKBMActive() && !g_KBMInput.IsCursorHiddenForUI());
bool drivePointerFromMouse = false;
float rawMouseMovieX = 0.0f;
float rawMouseMovieY = 0.0f;
int scrollDelta = 0;
if (mouseActive && g_hWnd)
{
RECT clientRect;
GetClientRect(g_hWnd, &clientRect);
int clientWidth = clientRect.right;
int clientHeight = clientRect.bottom;
if (clientWidth > 0 && clientHeight > 0)
{
int mouseX = g_KBMInput.GetMouseX();
int mouseY = g_KBMInput.GetMouseY();
bool mouseMoved = !m_bHasMousePosition || mouseX != m_lastMouseX || mouseY != m_lastMouseY;
m_bHasMousePosition = true;
m_lastMouseX = mouseX;
m_lastMouseY = mouseY;
scrollDelta = g_KBMInput.GetMouseWheel();
// Container coordinates are local to the main panel, so subtract its offset.
float mx = (float)mouseX * ((float)m_movieWidth / (float)clientWidth) - (float)m_controlMainPanel.getXPos();
float my = (float)mouseY * ((float)m_movieHeight / (float)clientHeight) - (float)m_controlMainPanel.getYPos();
rawMouseMovieX = mx;
rawMouseMovieY = my;
drivePointerFromMouse = m_bPointerDrivenByMouse || mouseMoved
|| g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT)
|| g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_RIGHT)
|| g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_MIDDLE)
|| scrollDelta != 0;
if (drivePointerFromMouse)
{
m_bPointerDrivenByMouse = true;
m_eCurrTapState = eTapStateNoInput;
m_pointerPos.x = mx;
m_pointerPos.y = my;
}
}
}
#endif
onMouseTick(); onMouseTick();
#ifdef _WINDOWS64
if (mouseActive)
{
if (g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_LEFT))
{
if (m_eCurrSection == eSectionInventoryCreativeSlider)
{
m_bMouseDragSlider = true;
m_pointerPos.x = rawMouseMovieX;
m_pointerPos.y = rawMouseMovieY;
handleOtherClicked(m_iPad, eSectionInventoryCreativeSlider, 0, false);
}
else
{
handleKeyDown(m_iPad, ACTION_MENU_A, false);
}
}
else if (m_bMouseDragSlider && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT))
{
m_pointerPos.x = rawMouseMovieX;
m_pointerPos.y = rawMouseMovieY;
handleOtherClicked(m_iPad, eSectionInventoryCreativeSlider, 0, false);
}
if (!g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT))
m_bMouseDragSlider = false;
if (g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_RIGHT))
{
handleKeyDown(m_iPad, ACTION_MENU_X, false);
}
if (g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_MIDDLE))
{
handleKeyDown(m_iPad, ACTION_MENU_Y, false);
}
if (scrollDelta > 0)
{
handleKeyDown(m_iPad, ACTION_MENU_OTHER_STICK_UP, false);
}
else if (scrollDelta < 0)
{
handleKeyDown(m_iPad, ACTION_MENU_OTHER_STICK_DOWN, false);
}
if (g_KBMInput.IsKeyPressed(VK_ESCAPE))
{
handleKeyDown(m_iPad, ACTION_MENU_B, false);
return;
}
}
#endif
IggyEvent mouseEvent; IggyEvent mouseEvent;
S32 width, height; S32 width, height;
m_parentLayer->getRenderDimensions(width, height); m_parentLayer->getRenderDimensions(width, height);
#ifdef _WINDOWS64
S32 x;
S32 y;
if (mouseActive && m_bPointerDrivenByMouse && g_hWnd)
{
RECT clientRect;
GetClientRect(g_hWnd, &clientRect);
if (clientRect.right > 0 && clientRect.bottom > 0)
{
float mouseMovieX = (float)g_KBMInput.GetMouseX() * ((float)m_movieWidth / (float)clientRect.right);
float mouseMovieY = (float)g_KBMInput.GetMouseY() * ((float)m_movieHeight / (float)clientRect.bottom);
float mouseLocalX = mouseMovieX - (float)m_controlMainPanel.getXPos();
float mouseLocalY = mouseMovieY - (float)m_controlMainPanel.getYPos();
x = (S32)(mouseLocalX * ((float)width / m_movieWidth));
y = (S32)(mouseLocalY * ((float)height / m_movieHeight));
}
else
{
x = (S32)(m_pointerPos.x * ((float)width / m_movieWidth));
y = (S32)(m_pointerPos.y * ((float)height / m_movieHeight));
}
}
else
{
x = (S32)(m_pointerPos.x * ((float)width / m_movieWidth));
y = (S32)(m_pointerPos.y * ((float)height / m_movieHeight));
}
#else
S32 x = (S32)(m_pointerPos.x * ((float)width / m_movieWidth)); S32 x = (S32)(m_pointerPos.x * ((float)width / m_movieWidth));
S32 y = (S32)(m_pointerPos.y * ((float)height / m_movieHeight)); S32 y = (S32)(m_pointerPos.y * ((float)height / m_movieHeight));
#endif
IggyMakeEventMouseMove( &mouseEvent, x, y); IggyMakeEventMouseMove( &mouseEvent, x, y);

View file

@ -10,12 +10,6 @@ class UIScene_AbstractContainerMenu : public UIScene, public virtual IUIScene_Ab
private: private:
ESceneSection m_focusSection; ESceneSection m_focusSection;
bool m_bIgnoreInput; bool m_bIgnoreInput;
#ifdef _WINDOWS64
bool m_bMouseDragSlider;
bool m_bHasMousePosition;
int m_lastMouseX;
int m_lastMouseY;
#endif
protected: protected:
UIControl m_controlMainPanel; UIControl m_controlMainPanel;

View file

@ -973,6 +973,9 @@ void gdraw_D3D1X_(SetRendertargetSize)(S32 w, S32 h)
void gdraw_D3D1X_(SetTileOrigin)(ID3D1X(RenderTargetView) *main_rt, ID3D1X(DepthStencilView) *main_ds, ID3D1X(ShaderResourceView) *non_msaa_rt, S32 x, S32 y) void gdraw_D3D1X_(SetTileOrigin)(ID3D1X(RenderTargetView) *main_rt, ID3D1X(DepthStencilView) *main_ds, ID3D1X(ShaderResourceView) *non_msaa_rt, S32 x, S32 y)
{ {
if (!gdraw) return; // AAR - saftey check because windows calls resize early
D3D1X_(RENDER_TARGET_VIEW_DESC) desc; D3D1X_(RENDER_TARGET_VIEW_DESC) desc;
if (gdraw->frame_done) { if (gdraw->frame_done) {

View file

@ -123,7 +123,7 @@ void KeyboardMouseInput::Tick()
} }
} }
if (m_windowFocused && (m_mouseGrabbed || m_cursorHiddenForUI) && g_hWnd) if ((m_mouseGrabbed || m_cursorHiddenForUI) && g_hWnd)
{ {
RECT rc; RECT rc;
GetClientRect(g_hWnd, &rc); GetClientRect(g_hWnd, &rc);

View file

@ -88,8 +88,7 @@ BOOL g_bWidescreen = TRUE;
int g_iScreenWidth = 1920; int g_iScreenWidth = 1920;
int g_iScreenHeight = 1080; int g_iScreenHeight = 1080;
UINT g_ScreenWidth = 1920; float g_iAspectRatio = static_cast<float>(g_iScreenWidth) / g_iScreenHeight;
UINT g_ScreenHeight = 1080;
char g_Win64Username[17] = { 0 }; char g_Win64Username[17] = { 0 };
wchar_t g_Win64UsernameW[17] = { 0 }; wchar_t g_Win64UsernameW[17] = { 0 };
@ -98,6 +97,14 @@ wchar_t g_Win64UsernameW[17] = { 0 };
static bool g_isFullscreen = false; static bool g_isFullscreen = false;
static WINDOWPLACEMENT g_wpPrev = { sizeof(g_wpPrev) }; static WINDOWPLACEMENT g_wpPrev = { sizeof(g_wpPrev) };
//--------------------------------------------------------------------------------------
// Update the Aspect Ratio to support Any Aspect Ratio
//--------------------------------------------------------------------------------------
void UpdateAspectRatio(int width, int height)
{
g_iAspectRatio = static_cast<float>(width) / height;
}
struct Win64LaunchOptions struct Win64LaunchOptions
{ {
int screenMode; int screenMode;
@ -468,6 +475,7 @@ ID3D11Texture2D* g_pDepthStencilBuffer = NULL;
// WM_COMMAND - process the application menu // WM_COMMAND - process the application menu
// WM_PAINT - Paint the main window // WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return // WM_DESTROY - post a quit message and return
// WM_SIZE - handle resizing logic to support Any Aspect Ratio
// //
// //
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
@ -585,6 +593,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
} }
} }
break; break;
case WM_SIZE:
{
UpdateAspectRatio(LOWORD(lParam), HIWORD(lParam));
}
break;
default: default:
return DefWindowProc(hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam);
} }
@ -719,7 +732,7 @@ HRESULT InitDevice()
//app.DebugPrintf("width: %d, height: %d\n", width, height); //app.DebugPrintf("width: %d, height: %d\n", width, height);
width = g_iScreenWidth; width = g_iScreenWidth;
height = g_iScreenHeight; height = g_iScreenHeight;
app.DebugPrintf("width: %d, height: %d\n", width, height); //app.DebugPrintf("width: %d, height: %d\n", width, height);
UINT createDeviceFlags = 0; UINT createDeviceFlags = 0;
#ifdef _DEBUG #ifdef _DEBUG

View file

@ -48,13 +48,11 @@ void glLoadIdentity()
RenderManager.MatrixSetIdentity(); RenderManager.MatrixSetIdentity();
} }
extern int g_iScreenWidth; // AAR - Use calculated aspect ratio to support dynamic resizing
extern int g_iScreenHeight; extern float g_iAspectRatio;
void gluPerspective(float fovy, float aspect, float zNear, float zFar) void gluPerspective(float fovy, float aspect, float zNear, float zFar)
{ {
float dynamicAspect = (float)g_iScreenWidth / (float)g_iScreenHeight; RenderManager.MatrixPerspective(fovy, g_iAspectRatio, zNear, zFar);
RenderManager.MatrixPerspective(fovy, dynamicAspect, zNear, zFar);
} }
void glOrtho(float left,float right,float bottom,float top,float zNear,float zFar) void glOrtho(float left,float right,float bottom,float top,float zNear,float zFar)