Add support for camera reference frames to support camera yaw in certain situations (#4088)
* proof of concept change for fixing camera yaw rotation being ignored Signed-off-by: hultonha <hultonha@amazon.co.uk> * updates to fully support camera roll Signed-off-by: hultonha <hultonha@amazon.co.uk> * small fixes for PR Signed-off-by: hultonha <hultonha@amazon.co.uk> * undo changes in EditorCameraComponent Signed-off-by: hultonha <hultonha@amazon.co.uk> * add test to verify interaction between editor viewport view entity change and modular camera controller Signed-off-by: hultonha <hultonha@amazon.co.uk> * add additional tests for updated camera behaviors Signed-off-by: hultonha <hultonha@amazon.co.uk> * revert change to Camera Gem Output Name Signed-off-by: hultonha <hultonha@amazon.co.uk> * move location of new files Signed-off-by: hultonha <hultonha@amazon.co.uk> * fix tab/spaces issue Signed-off-by: hultonha <hultonha@amazon.co.uk> * remove static from potentially unused functions Signed-off-by: hultonha <hultonha@amazon.co.uk> * set camera lib name in CMakeLists.txt file Signed-off-by: hultonha <hultonha@amazon.co.uk> * cosmetic CMakeLists.txt change Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include <EditorModularViewportCameraComposer.h>
|
||||
|
||||
#include <AtomToolsFramework/Viewport/ModularViewportCameraControllerRequestBus.h>
|
||||
#include <AzCore/Component/TransformBus.h>
|
||||
#include <AzCore/std/smart_ptr/make_shared.h>
|
||||
#include <AzFramework/Render/IntersectorInterface.h>
|
||||
#include <AzToolsFramework/Viewport/ViewportMessages.h>
|
||||
@@ -34,10 +35,12 @@ namespace SandboxEditor
|
||||
: m_viewportId(viewportId)
|
||||
{
|
||||
EditorModularViewportCameraComposerNotificationBus::Handler::BusConnect(viewportId);
|
||||
Camera::EditorCameraNotificationBus::Handler::BusConnect();
|
||||
}
|
||||
|
||||
EditorModularViewportCameraComposer::~EditorModularViewportCameraComposer()
|
||||
{
|
||||
Camera::EditorCameraNotificationBus::Handler::BusDisconnect();
|
||||
EditorModularViewportCameraComposerNotificationBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
@@ -283,4 +286,22 @@ namespace SandboxEditor
|
||||
m_orbitCamera->SetOrbitInputChannelId(SandboxEditor::CameraOrbitChannelId());
|
||||
m_orbitDollyMoveCamera->SetDollyInputChannelId(SandboxEditor::CameraOrbitDollyChannelId());
|
||||
}
|
||||
|
||||
void EditorModularViewportCameraComposer::OnViewportViewEntityChanged(const AZ::EntityId& viewEntityId)
|
||||
{
|
||||
if (viewEntityId.IsValid())
|
||||
{
|
||||
AZ::Transform worldFromLocal = AZ::Transform::CreateIdentity();
|
||||
AZ::TransformBus::EventResult(worldFromLocal, viewEntityId, &AZ::TransformBus::Events::GetWorldTM);
|
||||
|
||||
AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event(
|
||||
m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::SetReferenceFrame,
|
||||
worldFromLocal);
|
||||
}
|
||||
else
|
||||
{
|
||||
AtomToolsFramework::ModularViewportCameraControllerRequestBus::Event(
|
||||
m_viewportId, &AtomToolsFramework::ModularViewportCameraControllerRequestBus::Events::ClearReferenceFrame);
|
||||
}
|
||||
}
|
||||
} // namespace SandboxEditor
|
||||
|
||||
Reference in New Issue
Block a user