Add toolbar for anim viewport and some more camera controls.

Signed-off-by: rhhong <rhhong@amazon.com>
This commit is contained in:
rhhong
2021-10-17 16:40:47 -07:00
parent 960e3fc1b9
commit 13781a759f
12 changed files with 238 additions and 1 deletions
@@ -34,6 +34,23 @@ namespace EMStudio
SetupCameras();
SetupCameraController();
Reinit();
AnimViewportRequestBus::Handler::BusConnect();
}
AnimViewportWidget::~AnimViewportWidget()
{
AnimViewportRequestBus::Handler::BusDisconnect();
}
void AnimViewportWidget::Reinit(bool resetCamera)
{
if (resetCamera)
{
ResetCamera();
}
m_renderer->Reinit();
}
void AnimViewportWidget::SetupCameras()
@@ -100,4 +117,43 @@ namespace EMStudio
});
GetControllerList()->Add(controller);
}
void AnimViewportWidget::ResetCamera()
{
SetCameraViewMode(CameraViewMode::DEFAULT);
}
void AnimViewportWidget::SetCameraViewMode([[maybe_unused]]CameraViewMode mode)
{
// Set the camera view mode.
AZ::Vector3 targetPosition = m_renderer->GetCenter();
targetPosition.SetZ(targetPosition.GetY() + TargetCenterOffsetZ);
AZ::Vector3 cameraPosition;
switch (mode)
{
case CameraViewMode::FRONT:
cameraPosition.Set(0.0f, CameraDistance, targetPosition.GetZ());
break;
case CameraViewMode::BACK:
cameraPosition.Set(0.0f, -CameraDistance, targetPosition.GetZ());
break;
case CameraViewMode::TOP:
cameraPosition.Set(0.0f, 0.0f, CameraDistance + targetPosition.GetZ());
break;
case CameraViewMode::BOTTOM:
cameraPosition.Set(0.0f, 0.0f, -CameraDistance + targetPosition.GetZ());
break;
case CameraViewMode::LEFT:
cameraPosition.Set(-CameraDistance, 0.0f, targetPosition.GetZ());
break;
case CameraViewMode::RIGHT:
cameraPosition.Set(CameraDistance, 0.0f, targetPosition.GetZ());
break;
case CameraViewMode::DEFAULT:
// The default view mode is looking from the top left of the character.
cameraPosition.Set(-CameraDistance, CameraDistance, CameraDistance + targetPosition.GetZ());
break;
}
GetViewportContext()->SetCameraTransform(AZ::Transform::CreateLookAt(cameraPosition, targetPosition));
}
} // namespace EMStudio