Switch Python camera API to use Atom directly
Signed-off-by: nvsickle <nvsickle@amazon.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user