Switch Python camera API to use Atom directly

Signed-off-by: nvsickle <nvsickle@amazon.com>
This commit is contained in:
nvsickle
2021-06-29 11:33:12 -07:00
parent 4874a48c18
commit 26c123dd56
+32 -12
View File
@@ -28,6 +28,10 @@
#include "UndoConfigSpec.h"
#include "ViewManager.h"
// Atom
#include <Atom/RPI.Public/ViewportContextBus.h>
#include <Atom/RPI.Public/ViewportContext.h>
//////////////////////////////////////////////////////////////////////////
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<AzToolsFramework::IEditorCameraController>::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<AzToolsFramework::IEditorCameraController>::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);
}
}
}