Fix camera drift issues (#4576)
* remove some unused code in RenderViewportWidget and make viewing devicePixelRatioF easier Signed-off-by: hultonha <hultonha@amazon.co.uk> * updates to how cursor positions are calculate to handle the viewport widget moving Signed-off-by: hultonha <hultonha@amazon.co.uk> * remove optional for previous position Signed-off-by: hultonha <hultonha@amazon.co.uk> * add test to capture error with moving the widget Signed-off-by: hultonha <hultonha@amazon.co.uk> * minor comment updates before publishing PR Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
+6
-9
@@ -90,7 +90,7 @@ namespace AtomToolsFramework
|
||||
//! Input processing is enabled by default.
|
||||
void SetInputProcessingEnabled(bool enabled);
|
||||
|
||||
// AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler ...
|
||||
// AzToolsFramework::ViewportInteraction::ViewportInteractionRequestBus::Handler overrides ...
|
||||
AzFramework::CameraState GetCameraState() override;
|
||||
AzFramework::ScreenPoint ViewportWorldToScreen(const AZ::Vector3& worldPosition) override;
|
||||
AZStd::optional<AZ::Vector3> ViewportScreenToWorld(const AzFramework::ScreenPoint& screenPosition, float depth) override;
|
||||
@@ -98,12 +98,12 @@ namespace AtomToolsFramework
|
||||
const AzFramework::ScreenPoint& screenPosition) override;
|
||||
float DeviceScalingFactor() override;
|
||||
|
||||
// AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler ...
|
||||
// AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler overrides ...
|
||||
void BeginCursorCapture() override;
|
||||
void EndCursorCapture() override;
|
||||
bool IsMouseOver() const override;
|
||||
|
||||
// AzFramework::WindowRequestBus::Handler ...
|
||||
// AzFramework::WindowRequestBus::Handler overrides ...
|
||||
void SetWindowTitle(const AZStd::string& title) override;
|
||||
AzFramework::WindowSize GetClientAreaSize() const override;
|
||||
void ResizeClientArea(AzFramework::WindowSize clientAreaSize) override;
|
||||
@@ -116,18 +116,17 @@ namespace AtomToolsFramework
|
||||
uint32_t GetDisplayRefreshRate() const override;
|
||||
|
||||
protected:
|
||||
// AzFramework::InputChannelEventListener ...
|
||||
// AzFramework::InputChannelEventListener overrides ...
|
||||
bool OnInputChannelEventFiltered(const AzFramework::InputChannel& inputChannel) override;
|
||||
|
||||
// AZ::TickBus::Handler ...
|
||||
// AZ::TickBus::Handler overrides ...
|
||||
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
|
||||
|
||||
// QWidget ...
|
||||
// QWidget overrides ...
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
bool event(QEvent* event) override;
|
||||
void enterEvent(QEvent* event) override;
|
||||
void leaveEvent(QEvent* event) override;
|
||||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
|
||||
private:
|
||||
void SendWindowResizeEvent();
|
||||
@@ -143,8 +142,6 @@ namespace AtomToolsFramework
|
||||
AZ::RPI::AuxGeomDrawPtr m_auxGeom;
|
||||
// Tracks whether the cursor is currently over our viewport, used for mouse input event book-keeping.
|
||||
bool m_mouseOver = false;
|
||||
// The last recorded mouse position, in local viewport screen coordinates.
|
||||
QPointF m_mousePosition;
|
||||
// Captures the time between our render events to give controllers a time delta.
|
||||
QElapsedTimer m_renderTimer;
|
||||
// The time of the last recorded tick event from the system tick bus.
|
||||
|
||||
Reference in New Issue
Block a user