Fix mouse capture behavior for Editor Viewport (#3417)
* first pass of fixes for cursor capture and context menu Signed-off-by: hultonha <hultonha@amazon.co.uk> * restore previous behavior of HandleMouseMoveEvent Signed-off-by: hultonha <hultonha@amazon.co.uk> * tidy-up from previous cursor/input changes Signed-off-by: hultonha <hultonha@amazon.co.uk> * add missing casts Signed-off-by: hultonha <hultonha@amazon.co.uk> * small updates to support tests Signed-off-by: hultonha <hultonha@amazon.co.uk> * additional tests and some tidy-up Signed-off-by: hultonha <hultonha@amazon.co.uk> * small updates before publishing PR (comment/naming updates) Signed-off-by: hultonha <hultonha@amazon.co.uk> * add missing parameter to MouseInteractionEvent constructor Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
@@ -104,7 +104,6 @@
|
||||
|
||||
AZ_CVAR(
|
||||
bool, ed_visibility_logTiming, false, nullptr, AZ::ConsoleFunctorFlags::Null, "Output the timing of the new IVisibilitySystem query");
|
||||
AZ_CVAR(bool, ed_showCursorCameraLook, true, nullptr, AZ::ConsoleFunctorFlags::Null, "Show the cursor when using free look with the new camera system");
|
||||
|
||||
EditorViewportWidget* EditorViewportWidget::m_pPrimaryViewport = nullptr;
|
||||
|
||||
@@ -1079,13 +1078,19 @@ AZStd::shared_ptr<AtomToolsFramework::ModularViewportCameraController> CreateMod
|
||||
{
|
||||
const auto hideCursor = [viewportId]
|
||||
{
|
||||
AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Event(
|
||||
viewportId, &AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Events::BeginCursorCapture);
|
||||
if (SandboxEditor::CameraCaptureCursorForLook())
|
||||
{
|
||||
AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Event(
|
||||
viewportId, &AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Events::BeginCursorCapture);
|
||||
}
|
||||
};
|
||||
const auto showCursor = [viewportId]
|
||||
{
|
||||
AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Event(
|
||||
viewportId, &AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Events::EndCursorCapture);
|
||||
if (SandboxEditor::CameraCaptureCursorForLook())
|
||||
{
|
||||
AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Event(
|
||||
viewportId, &AzToolsFramework::ViewportInteraction::ViewportMouseCursorRequestBus::Events::EndCursorCapture);
|
||||
}
|
||||
};
|
||||
|
||||
auto firstPersonRotateCamera = AZStd::make_shared<AzFramework::RotateCameraInput>(SandboxEditor::CameraFreeLookChannelId());
|
||||
@@ -1094,12 +1099,10 @@ AZStd::shared_ptr<AtomToolsFramework::ModularViewportCameraController> CreateMod
|
||||
return SandboxEditor::CameraRotateSpeed();
|
||||
};
|
||||
|
||||
if (!ed_showCursorCameraLook)
|
||||
{
|
||||
// default behavior is to hide the cursor but this can be disabled (useful for remote desktop)
|
||||
firstPersonRotateCamera->SetActivationBeganFn(hideCursor);
|
||||
firstPersonRotateCamera->SetActivationEndedFn(showCursor);
|
||||
}
|
||||
// default behavior is to hide the cursor but this can be disabled (useful for remote desktop)
|
||||
// note: See CaptureCursorLook in the Settings Registry
|
||||
firstPersonRotateCamera->SetActivationBeganFn(hideCursor);
|
||||
firstPersonRotateCamera->SetActivationEndedFn(showCursor);
|
||||
|
||||
auto firstPersonPanCamera =
|
||||
AZStd::make_shared<AzFramework::PanCameraInput>(SandboxEditor::CameraFreePanChannelId(), AzFramework::LookPan);
|
||||
|
||||
Reference in New Issue
Block a user