diff --git a/Gems/Gestures/Code/CMakeLists.txt b/Gems/Gestures/Code/CMakeLists.txt index fe0fd9d98b..c05b39b72c 100644 --- a/Gems/Gestures/Code/CMakeLists.txt +++ b/Gems/Gestures/Code/CMakeLists.txt @@ -20,6 +20,9 @@ ly_add_target( PUBLIC Include BUILD_DEPENDENCIES + PUBLIC + Gem::Atom_RPI.Public + AZ::AtomCore PRIVATE Legacy::CryCommon ) diff --git a/Gems/Gestures/Code/Include/Gestures/IGestureRecognizer.h b/Gems/Gestures/Code/Include/Gestures/IGestureRecognizer.h index 3f71cd4b62..4b5b7726d8 100644 --- a/Gems/Gestures/Code/Include/Gestures/IGestureRecognizer.h +++ b/Gems/Gestures/Code/Include/Gestures/IGestureRecognizer.h @@ -19,6 +19,9 @@ #include #include +#include +#include + //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures { @@ -184,8 +187,16 @@ namespace Gestures return; } - const AZ::Vector2 eventScreenPositionPixels = positionData2D->ConvertToScreenSpaceCoordinates(static_cast(gEnv->pRenderer->GetWidth()), - static_cast(gEnv->pRenderer->GetHeight())); + auto atomViewportRequests = AZ::Interface::Get(); + AZ::RPI::ViewportContextPtr viewportContext = atomViewportRequests->GetDefaultViewportContext(); + if (viewportContext == nullptr) + { + return; + } + + AzFramework::WindowSize windowSize = viewportContext->GetViewportSize(); + const AZ::Vector2 eventScreenPositionPixels = positionData2D->ConvertToScreenSpaceCoordinates(static_cast(windowSize.m_width), + static_cast(windowSize.m_height)); if (inputChannel.IsStateBegan()) { o_hasBeenConsumed = OnPressedEvent(eventScreenPositionPixels, pointerIndex); @@ -225,8 +236,16 @@ namespace Gestures //////////////////////////////////////////////////////////////////////////////////////////////// inline void IRecognizer::UpdateNormalizedPositionAndDeltaFromScreenPosition(const AZ::Vector2& screenPositionPixels) { - const AZ::Vector2 normalizedPosition(screenPositionPixels.GetX() / static_cast(gEnv->pRenderer->GetWidth()), - screenPositionPixels.GetY() / static_cast(gEnv->pRenderer->GetHeight())); + auto atomViewportRequests = AZ::Interface::Get(); + AZ::RPI::ViewportContextPtr viewportContext = atomViewportRequests->GetDefaultViewportContext(); + if (viewportContext == nullptr) + { + return; + } + + AzFramework::WindowSize windowSize = viewportContext->GetViewportSize(); + const AZ::Vector2 normalizedPosition(screenPositionPixels.GetX() / static_cast(windowSize.m_width), + screenPositionPixels.GetY() / static_cast(windowSize.m_height)); AzFramework::InputChannel::PositionData2D::UpdateNormalizedPositionAndDelta(normalizedPosition); } }