diff --git a/Code/Editor/EditorPreferencesPageViewportCamera.cpp b/Code/Editor/EditorPreferencesPageViewportCamera.cpp index 16176bc241..e1175ca27a 100644 --- a/Code/Editor/EditorPreferencesPageViewportCamera.cpp +++ b/Code/Editor/EditorPreferencesPageViewportCamera.cpp @@ -75,7 +75,10 @@ void CEditorPreferencesPage_ViewportCamera::Reflect(AZ::SerializeContext& serial ->Field("CaptureCursorLook", &CameraMovementSettings::m_captureCursorLook) ->Field("OrbitYawRotationInverted", &CameraMovementSettings::m_orbitYawRotationInverted) ->Field("PanInvertedX", &CameraMovementSettings::m_panInvertedX) - ->Field("PanInvertedY", &CameraMovementSettings::m_panInvertedY); + ->Field("PanInvertedY", &CameraMovementSettings::m_panInvertedY) + ->Field("DefaultPositionX", &CameraMovementSettings::m_defaultCameraPositionX) + ->Field("DefaultPositionY", &CameraMovementSettings::m_defaultCameraPositionY) + ->Field("DefaultPositionZ", &CameraMovementSettings::m_defaultCameraPositionZ); serialize.Class() ->Version(2) @@ -154,7 +157,16 @@ void CEditorPreferencesPage_ViewportCamera::Reflect(AZ::SerializeContext& serial "Invert direction of pan in local Y axis") ->DataElement( AZ::Edit::UIHandlers::CheckBox, &CameraMovementSettings::m_captureCursorLook, "Camera Capture Look Cursor", - "Should the cursor be captured (hidden) while performing free look"); + "Should the cursor be captured (hidden) while performing free look") + ->DataElement( + AZ::Edit::UIHandlers::SpinBox, &CameraMovementSettings::m_defaultCameraPositionX, "Default Camera X Position", + "Default Camera X Position when a level is opened") + ->DataElement( + AZ::Edit::UIHandlers::SpinBox, &CameraMovementSettings::m_defaultCameraPositionY, "Default Camera Y Position", + "Default Camera Y Position when a level is opened") + ->DataElement( + AZ::Edit::UIHandlers::SpinBox, &CameraMovementSettings::m_defaultCameraPositionZ, "Default Camera Z Position", + "Default Camera Z Position when a level is opened"); editContext->Class("Camera Input Settings", "") ->DataElement( @@ -271,6 +283,12 @@ void CEditorPreferencesPage_ViewportCamera::OnApply() SandboxEditor::SetCameraOrbitYawRotationInverted(m_cameraMovementSettings.m_orbitYawRotationInverted); SandboxEditor::SetCameraPanInvertedX(m_cameraMovementSettings.m_panInvertedX); SandboxEditor::SetCameraPanInvertedY(m_cameraMovementSettings.m_panInvertedY); + SandboxEditor::SetDefaultCameraEditorPosition( + AZ::Vector3( + m_cameraMovementSettings.m_defaultCameraPositionX, + m_cameraMovementSettings.m_defaultCameraPositionY, + m_cameraMovementSettings.m_defaultCameraPositionZ + )); SandboxEditor::SetCameraTranslateForwardChannelId(m_cameraInputSettings.m_translateForwardChannelId); SandboxEditor::SetCameraTranslateBackwardChannelId(m_cameraInputSettings.m_translateBackwardChannelId); @@ -308,6 +326,11 @@ void CEditorPreferencesPage_ViewportCamera::InitializeSettings() m_cameraMovementSettings.m_panInvertedX = SandboxEditor::CameraPanInvertedX(); m_cameraMovementSettings.m_panInvertedY = SandboxEditor::CameraPanInvertedY(); + AZ::Vector3 defaultCameraPosition = SandboxEditor::DefaultEditorCameraPosition(); + m_cameraMovementSettings.m_defaultCameraPositionX = defaultCameraPosition.GetX(); + m_cameraMovementSettings.m_defaultCameraPositionY = defaultCameraPosition.GetY(); + m_cameraMovementSettings.m_defaultCameraPositionZ = defaultCameraPosition.GetZ(); + m_cameraInputSettings.m_translateForwardChannelId = SandboxEditor::CameraTranslateForwardChannelId().GetName(); m_cameraInputSettings.m_translateBackwardChannelId = SandboxEditor::CameraTranslateBackwardChannelId().GetName(); m_cameraInputSettings.m_translateLeftChannelId = SandboxEditor::CameraTranslateLeftChannelId().GetName(); diff --git a/Code/Editor/EditorPreferencesPageViewportCamera.h b/Code/Editor/EditorPreferencesPageViewportCamera.h index fdc86b0f89..a2705bfd24 100644 --- a/Code/Editor/EditorPreferencesPageViewportCamera.h +++ b/Code/Editor/EditorPreferencesPageViewportCamera.h @@ -57,6 +57,9 @@ private: bool m_orbitYawRotationInverted; bool m_panInvertedX; bool m_panInvertedY; + float m_defaultCameraPositionX; + float m_defaultCameraPositionY; + float m_defaultCameraPositionZ; AZ::Crc32 RotateSmoothingVisibility() const { diff --git a/Code/Editor/EditorViewportSettings.cpp b/Code/Editor/EditorViewportSettings.cpp index 0fb061d102..d513080bdd 100644 --- a/Code/Editor/EditorViewportSettings.cpp +++ b/Code/Editor/EditorViewportSettings.cpp @@ -121,6 +121,13 @@ namespace SandboxEditor return AZ::Vector3(xPosition, yPosition, zPosition); } + void SetDefaultCameraEditorPosition(const AZ::Vector3 defaultCameraPosition) + { + SetRegistry(CameraDefaultStartingPositionX, defaultCameraPosition.GetX()); + SetRegistry(CameraDefaultStartingPositionY, defaultCameraPosition.GetY()); + SetRegistry(CameraDefaultStartingPositionZ, defaultCameraPosition.GetZ()); + } + bool GridSnappingEnabled() { return GetRegistry(GridSnappingSetting, false); diff --git a/Code/Editor/EditorViewportSettings.h b/Code/Editor/EditorViewportSettings.h index 5410ed0765..e72165b01c 100644 --- a/Code/Editor/EditorViewportSettings.h +++ b/Code/Editor/EditorViewportSettings.h @@ -34,6 +34,7 @@ namespace SandboxEditor SANDBOX_API AZStd::unique_ptr CreateEditorViewportSettingsCallbacks(); SANDBOX_API AZ::Vector3 DefaultEditorCameraPosition(); + SANDBOX_API void SetDefaultCameraEditorPosition(AZ::Vector3 defaultCameraPosition); SANDBOX_API bool GridSnappingEnabled(); SANDBOX_API void SetGridSnapping(bool enabled);