Restore grid and angle snapping (#640)

Restore grid and angle snapping (LYN-3367)
This commit is contained in:
Tom Hulton-Harrop
2021-05-07 17:21:12 +01:00
committed by GitHub
parent 2633efbd13
commit c5a06b8953
5 changed files with 86 additions and 37 deletions
@@ -99,6 +99,9 @@ namespace AtomToolsFramework
AZStd::optional<AzToolsFramework::ViewportInteraction::ProjectedViewportRay> ViewportScreenToWorldRay(
const AzFramework::ScreenPoint& screenPosition) override;
//! Set interface for providing viewport specific settings (e.g. snapping properties).
void SetViewportSettings(AzToolsFramework::ViewportInteraction::ViewportSettings* viewportSettings);
// AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Handler ...
void BeginCursorCapture() override;
void EndCursorCapture() override;
@@ -156,5 +159,7 @@ namespace AtomToolsFramework
bool m_capturingCursor = false;
// The last known position of the mouse cursor, if one is available.
AZStd::optional<QPoint> m_lastCursorPosition;
// The viewport settings (e.g. grid snapping, grid size) for this viewport.
const AzToolsFramework::ViewportInteraction::ViewportSettings* m_viewportSettings = nullptr;
};
} //namespace AtomToolsFramework
@@ -384,27 +384,32 @@ namespace AtomToolsFramework
bool RenderViewportWidget::GridSnappingEnabled()
{
return false;
return m_viewportSettings ? m_viewportSettings->GridSnappingEnabled() : false;
}
float RenderViewportWidget::GridSize()
{
return 0.0f;
return m_viewportSettings ? m_viewportSettings->GridSize() : 0.0f;
}
bool RenderViewportWidget::ShowGrid()
{
return false;
return m_viewportSettings ? m_viewportSettings->ShowGrid() : false;
}
bool RenderViewportWidget::AngleSnappingEnabled()
{
return false;
return m_viewportSettings ? m_viewportSettings->AngleSnappingEnabled() : false;
}
float RenderViewportWidget::AngleStep()
{
return 0.0f;
return m_viewportSettings ? m_viewportSettings->AngleStep() : 0.0f;
}
void RenderViewportWidget::SetViewportSettings(AzToolsFramework::ViewportInteraction::ViewportSettings* viewportSettings)
{
m_viewportSettings = viewportSettings;
}
AzFramework::ScreenPoint RenderViewportWidget::ViewportWorldToScreen(const AZ::Vector3& worldPosition)