Camera Component, Editor Viewport Widget refactoring.

- Handle changing of active camera entirely inside CameraComponentController
- Remove a LOT of legacy Cry things related to cameras
- Add a CameraSystemComponent to handle ActiveCameraRequestBus and CameraSystemRequestBus

Signed-off-by: Yuriy Toporovskyy <toporovskyy.y@gmail.com>
This commit is contained in:
Yuriy Toporovskyy
2021-08-04 10:39:57 -04:00
parent 6d2765ef42
commit 73fee0c57e
47 changed files with 1126 additions and 6046 deletions
+58 -57
View File
@@ -3728,24 +3728,24 @@ void CCryEditApp::OnToolsPreferences()
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnSwitchToDefaultCamera()
{
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
{
rvp->SetDefaultCamera();
}
//CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
//if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
//{
// rvp->SetDefaultCamera();
//}
}
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnUpdateSwitchToDefaultCamera(QAction* action)
void CCryEditApp::OnUpdateSwitchToDefaultCamera([[maybe_unused]] QAction* action)
{
Q_ASSERT(action->isCheckable());
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
{
action->setEnabled(true);
action->setChecked(rvp->IsDefaultCamera());
}
else
//CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
//if (false) // (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
//{
// action->setEnabled(true);
// action->setChecked(rvp->IsDefaultCamera());
//}
//else
{
action->setEnabled(false);
}
@@ -3754,11 +3754,11 @@ void CCryEditApp::OnUpdateSwitchToDefaultCamera(QAction* action)
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnSwitchToSequenceCamera()
{
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
{
rvp->SetSequenceCamera();
}
//CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
//if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
//{
// rvp->SetSequenceCamera();
//}
}
//////////////////////////////////////////////////////////////////////////
@@ -3766,27 +3766,27 @@ void CCryEditApp::OnUpdateSwitchToSequenceCamera(QAction* action)
{
Q_ASSERT(action->isCheckable());
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
//CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
{
bool enableAction = false;
//if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport))
//{
// bool enableAction = false;
// only enable if we're editing a sequence in Track View and have cameras in the level
if (GetIEditor()->GetAnimation()->GetSequence())
{
// // only enable if we're editing a sequence in Track View and have cameras in the level
// if (GetIEditor()->GetAnimation()->GetSequence())
// {
AZ::EBusAggregateResults<AZ::EntityId> componentCameras;
Camera::CameraBus::BroadcastResult(componentCameras, &Camera::CameraRequests::GetCameras);
// AZ::EBusAggregateResults<AZ::EntityId> componentCameras;
// Camera::CameraBus::BroadcastResult(componentCameras, &Camera::CameraRequests::GetCameras);
const int numCameras = componentCameras.values.size();
enableAction = (numCameras > 0);
}
// const int numCameras = componentCameras.values.size();
// enableAction = (numCameras > 0);
// }
action->setEnabled(enableAction);
action->setChecked(rvp->IsSequenceCamera());
}
else
// action->setEnabled(enableAction);
// action->setChecked(rvp->IsSequenceCamera());
//}
//else
{
action->setEnabled(false);
}
@@ -3795,31 +3795,32 @@ void CCryEditApp::OnUpdateSwitchToSequenceCamera(QAction* action)
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnSwitchToSelectedcamera()
{
CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
{
rvp->SetSelectedCamera();
}
//CViewport* vp = GetIEditor()->GetViewManager()->GetSelectedViewport();
//if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
//{
// rvp->SetSelectedCamera();
//}
}
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnUpdateSwitchToSelectedCamera(QAction* action)
{
Q_ASSERT(action->isCheckable());
AzToolsFramework::EntityIdList selectedEntityList;
AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(selectedEntityList, &AzToolsFramework::ToolsApplicationRequests::GetSelectedEntities);
AZ::EBusAggregateResults<AZ::EntityId> cameras;
Camera::CameraBus::BroadcastResult(cameras, &Camera::CameraRequests::GetCameras);
bool isCameraComponentSelected = selectedEntityList.size() > 0 ? AZStd::find(cameras.values.begin(), cameras.values.end(), *selectedEntityList.begin()) != cameras.values.end() : false;
(void)action;
//AzToolsFramework::EntityIdList selectedEntityList;
//AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult(selectedEntityList, &AzToolsFramework::ToolsApplicationRequests::GetSelectedEntities);
//AZ::EBusAggregateResults<AZ::EntityId> cameras;
//Camera::CameraBus::BroadcastResult(cameras, &Camera::CameraRequests::GetCameras);
//bool isCameraComponentSelected = selectedEntityList.size() > 0 ? AZStd::find(cameras.values.begin(), cameras.values.end(), *selectedEntityList.begin()) != cameras.values.end() : false;
CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport);
if (isCameraComponentSelected && rvp)
{
action->setEnabled(true);
action->setChecked(rvp->IsSelectedCamera());
}
else
//CViewport* pViewport = GetIEditor()->GetViewManager()->GetSelectedViewport();
//CRenderViewport* rvp = viewport_cast<CRenderViewport*>(pViewport);
//if (isCameraComponentSelected && rvp)
//{
// action->setEnabled(true);
// action->setChecked(rvp->IsSelectedCamera());
//}
//else
{
action->setEnabled(false);
}
@@ -3828,11 +3829,11 @@ void CCryEditApp::OnUpdateSwitchToSelectedCamera(QAction* action)
//////////////////////////////////////////////////////////////////////////
void CCryEditApp::OnSwitchcameraNext()
{
CViewport* vp = GetIEditor()->GetActiveView();
if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
{
rvp->CycleCamera();
}
//CViewport* vp = GetIEditor()->GetActiveView();
//if (CRenderViewport* rvp = viewport_cast<CRenderViewport*>(vp))
//{
// rvp->CycleCamera();
//}
}
//////////////////////////////////////////////////////////////////////////