Added Default Camera Location to the Viewport Setting Registry

Signed-off-by: igarri <igarri@amazon.com>
monroegm-disable-blank-issue-2
igarri 4 years ago
parent 8cf736b999
commit d12c6beb40

@ -51,6 +51,9 @@ namespace SandboxEditor
constexpr AZStd::string_view CameraOrbitDollyIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitDollyId"; constexpr AZStd::string_view CameraOrbitDollyIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitDollyId";
constexpr AZStd::string_view CameraOrbitPanIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitPanId"; constexpr AZStd::string_view CameraOrbitPanIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitPanId";
constexpr AZStd::string_view CameraFocusIdSetting = "/Amazon/Preferences/Editor/Camera/FocusId"; constexpr AZStd::string_view CameraFocusIdSetting = "/Amazon/Preferences/Editor/Camera/FocusId";
constexpr AZStd::string_view CameraDefaultStartingPositionX = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/x";
constexpr AZStd::string_view CameraDefaultStartingPositionY = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/y";
constexpr AZStd::string_view CameraDefaultStartingPositionZ = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/z";
template<typename T> template<typename T>
void SetRegistry(const AZStd::string_view setting, T&& value) void SetRegistry(const AZStd::string_view setting, T&& value)
@ -110,6 +113,14 @@ namespace SandboxEditor
return AZStd::make_unique<EditorViewportSettingsCallbacksImpl>(); return AZStd::make_unique<EditorViewportSettingsCallbacksImpl>();
} }
AZ::Vector3 DefaultEditorCameraPosition()
{
float xPosition = aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionX, 0.0));
float yPosition = aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionY, -10.0));
float zPosition = aznumeric_cast<float>(GetRegistry(CameraDefaultStartingPositionZ, 4.0));
return AZ::Vector3(xPosition, yPosition, zPosition);
}
bool GridSnappingEnabled() bool GridSnappingEnabled()
{ {
return GetRegistry(GridSnappingSetting, false); return GetRegistry(GridSnappingSetting, false);

@ -12,6 +12,7 @@
#include <AzCore/Settings/SettingsRegistry.h> #include <AzCore/Settings/SettingsRegistry.h>
#include <AzCore/std/smart_ptr/unique_ptr.h> #include <AzCore/std/smart_ptr/unique_ptr.h>
#include <AzCore/Math/Vector3.h>
#include <AzFramework/Input/Channels/InputChannelId.h> #include <AzFramework/Input/Channels/InputChannelId.h>
namespace SandboxEditor namespace SandboxEditor
@ -32,6 +33,8 @@ namespace SandboxEditor
//! event will fire when a value in the settings registry (editorpreferences.setreg) is modified. //! event will fire when a value in the settings registry (editorpreferences.setreg) is modified.
SANDBOX_API AZStd::unique_ptr<EditorViewportSettingsCallbacks> CreateEditorViewportSettingsCallbacks(); SANDBOX_API AZStd::unique_ptr<EditorViewportSettingsCallbacks> CreateEditorViewportSettingsCallbacks();
SANDBOX_API AZ::Vector3 DefaultEditorCameraPosition();
SANDBOX_API bool GridSnappingEnabled(); SANDBOX_API bool GridSnappingEnabled();
SANDBOX_API void SetGridSnapping(bool enabled); SANDBOX_API void SetGridSnapping(bool enabled);

@ -166,9 +166,6 @@ EditorViewportWidget::EditorViewportWidget(const QString& name, QWidget* parent)
m_defaultViewTM.SetIdentity(); m_defaultViewTM.SetIdentity();
//Set the camera position to a more sensible default.
m_defaultViewTM.SetTranslation(Vec3(0.f, -10.f, 4.f));
if (GetIEditor()->GetViewManager()->GetSelectedViewport() == nullptr) if (GetIEditor()->GetViewManager()->GetSelectedViewport() == nullptr)
{ {
GetIEditor()->GetViewManager()->SelectViewport(this); GetIEditor()->GetViewManager()->SelectViewport(this);
@ -626,16 +623,10 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event)
PopDisableRendering(); PopDisableRendering();
{ {
AZ::Aabb terrainAabb = AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
AzFramework::Terrain::TerrainDataRequestBus::BroadcastResult(terrainAabb, &AzFramework::Terrain::TerrainDataRequests::GetTerrainAabb);
float sx = terrainAabb.GetXExtent();
float sy = terrainAabb.GetYExtent();
Matrix34 viewTM; Matrix34 viewTM;
viewTM.SetIdentity(); viewTM.SetIdentity();
// Initial camera will be at middle of the map at the height of 2
// meters above the terrain (default terrain height is 32) viewTM.SetTranslation(Vec3(m_editorViewportSettings.DefaultEditorCameraPosition()));
viewTM.SetTranslation(Vec3(sx * 0.5f, sy * 0.5f, 34.0f));
SetViewTM(viewTM); SetViewTM(viewTM);
UpdateScene(); UpdateScene();
@ -650,16 +641,10 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event)
PopDisableRendering(); PopDisableRendering();
{ {
AZ::Aabb terrainAabb = AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
AzFramework::Terrain::TerrainDataRequestBus::BroadcastResult(terrainAabb, &AzFramework::Terrain::TerrainDataRequests::GetTerrainAabb);
float sx = terrainAabb.GetXExtent();
float sy = terrainAabb.GetYExtent();
Matrix34 viewTM; Matrix34 viewTM;
viewTM.SetIdentity(); viewTM.SetIdentity();
// Initial camera will be at middle of the map at the height of 2
// meters above the terrain (default terrain height is 32) viewTM.SetTranslation(Vec3(m_editorViewportSettings.DefaultEditorCameraPosition()));
viewTM.SetTranslation(Vec3(sx * 0.5f, sy * 0.5f, 34.0f));
SetViewTM(viewTM); SetViewTM(viewTM);
} }
break; break;
@ -2035,6 +2020,9 @@ void EditorViewportWidget::SetDefaultCamera()
m_viewSourceType = ViewSourceType::None; m_viewSourceType = ViewSourceType::None;
GetViewManager()->SetCameraObjectId(GUID_NULL); GetViewManager()->SetCameraObjectId(GUID_NULL);
SetName(m_defaultViewName); SetName(m_defaultViewName);
// Set the default Editor Camera position.
m_defaultViewTM.SetTranslation(Vec3(m_editorViewportSettings.DefaultEditorCameraPosition()));
SetViewTM(m_defaultViewTM); SetViewTM(m_defaultViewTM);
// Synchronize the configured editor viewport FOV to the default camera // Synchronize the configured editor viewport FOV to the default camera
@ -2537,6 +2525,11 @@ bool EditorViewportSettings::StickySelectEnabled() const
return SandboxEditor::StickySelectEnabled(); return SandboxEditor::StickySelectEnabled();
} }
AZ::Vector3 EditorViewportSettings::DefaultEditorCameraPosition() const
{
return SandboxEditor::DefaultEditorCameraPosition();
}
AZ_CVAR_EXTERNED(bool, ed_previewGameInFullscreen_once); AZ_CVAR_EXTERNED(bool, ed_previewGameInFullscreen_once);
bool EditorViewportWidget::ShouldPreviewFullscreen() const bool EditorViewportWidget::ShouldPreviewFullscreen() const

@ -78,6 +78,7 @@ struct EditorViewportSettings : public AzToolsFramework::ViewportInteraction::Vi
float ManipulatorLineBoundWidth() const override; float ManipulatorLineBoundWidth() const override;
float ManipulatorCircleBoundWidth() const override; float ManipulatorCircleBoundWidth() const override;
bool StickySelectEnabled() const override; bool StickySelectEnabled() const override;
AZ::Vector3 DefaultEditorCameraPosition() const override;
}; };
// EditorViewportWidget window // EditorViewportWidget window

@ -198,6 +198,8 @@ namespace AzToolsFramework
virtual float ManipulatorCircleBoundWidth() const = 0; virtual float ManipulatorCircleBoundWidth() const = 0;
//! Returns if sticky select is enabled or not. //! Returns if sticky select is enabled or not.
virtual bool StickySelectEnabled() const = 0; virtual bool StickySelectEnabled() const = 0;
//! Returns the default viewport camera position.
virtual AZ::Vector3 DefaultEditorCameraPosition() const = 0;
protected: protected:
~ViewportSettingsRequests() = default; ~ViewportSettingsRequests() = default;

Loading…
Cancel
Save