From 26c123dd568c758f7bb3fbab9cc0440b90a90bd9 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 29 Jun 2021 11:33:12 -0700 Subject: [PATCH] Switch Python camera API to use Atom directly Signed-off-by: nvsickle --- Code/Sandbox/Editor/CryEditPy.cpp | 44 ++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/Code/Sandbox/Editor/CryEditPy.cpp b/Code/Sandbox/Editor/CryEditPy.cpp index a4ac36ac12..f989e82d0d 100644 --- a/Code/Sandbox/Editor/CryEditPy.cpp +++ b/Code/Sandbox/Editor/CryEditPy.cpp @@ -28,6 +28,10 @@ #include "UndoConfigSpec.h" #include "ViewManager.h" +// Atom +#include +#include + ////////////////////////////////////////////////////////////////////////// namespace { @@ -224,33 +228,49 @@ namespace AZ::Vector3 PyGetCurrentViewPosition() { - Vec3 pos = GetIEditor()->GetSystem()->GetViewCamera().GetPosition(); - return AZ::Vector3(pos.x, pos.y, pos.z); + auto viewportContextRequests = AZ::RPI::ViewportContextRequests::Get(); + if (viewportContextRequests) + { + AZ::RPI::ViewportContextPtr viewportContext = viewportContextRequests->GetDefaultViewportContext(); + AZ::Transform transform = viewportContext->GetCameraTransform(); + return transform.GetTranslation(); + } + return AZ::Vector3(); } AZ::Vector3 PyGetCurrentViewRotation() { - Ang3 ang = RAD2DEG(Ang3::GetAnglesXYZ(Matrix33(GetIEditor()->GetSystem()->GetViewCamera().GetMatrix()))); - return AZ::Vector3(ang.x, ang.y, ang.z); + auto viewportContextRequests = AZ::RPI::ViewportContextRequests::Get(); + if (viewportContextRequests) + { + AZ::RPI::ViewportContextPtr viewportContext = viewportContextRequests->GetDefaultViewportContext(); + AZ::Transform transform = viewportContext->GetCameraTransform(); + return transform.GetRotation().GetEulerDegrees(); + } + return AZ::Vector3(); } void PySetCurrentViewPosition(float x, float y, float z) { - AzToolsFramework::IEditorCameraController* editorCameraController = AZ::Interface::Get(); - AZ_Error("editor", editorCameraController, "IEditorCameraController is not registered."); - if (editorCameraController) + auto viewportContextRequests = AZ::RPI::ViewportContextRequests::Get(); + if (viewportContextRequests) { - editorCameraController->SetCurrentViewPosition(AZ::Vector3{ x, y, z }); + AZ::RPI::ViewportContextPtr viewportContext = viewportContextRequests->GetDefaultViewportContext(); + AZ::Transform transform = viewportContext->GetCameraTransform(); + transform.SetTranslation(x, y, z); + viewportContextRequests->GetDefaultViewportContext()->SetCameraTransform(transform); } } void PySetCurrentViewRotation(float x, float y, float z) { - AzToolsFramework::IEditorCameraController* editorCameraController = AZ::Interface::Get(); - AZ_Error("editor", editorCameraController, "IEditorCameraController is not registered."); - if (editorCameraController) + auto viewportContextRequests = AZ::RPI::ViewportContextRequests::Get(); + if (viewportContextRequests) { - editorCameraController->SetCurrentViewRotation(AZ::Vector3{ x, y, z }); + AZ::RPI::ViewportContextPtr viewportContext = viewportContextRequests->GetDefaultViewportContext(); + AZ::Transform transform = viewportContext->GetCameraTransform(); + transform.SetRotation(AZ::Quaternion::CreateFromEulerAnglesDegrees(AZ::Vector3(x, y, z))); + viewportContextRequests->GetDefaultViewportContext()->SetCameraTransform(transform); } } }