Atom Tools: move performance metrics status bar widgets to base window
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
This commit is contained in:
+8
@@ -16,6 +16,7 @@
|
|||||||
#include <AzQtComponents/Components/StyledDockWidget.h>
|
#include <AzQtComponents/Components/StyledDockWidget.h>
|
||||||
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
namespace AtomToolsFramework
|
namespace AtomToolsFramework
|
||||||
{
|
{
|
||||||
@@ -45,9 +46,16 @@ namespace AtomToolsFramework
|
|||||||
virtual void OpenHelp();
|
virtual void OpenHelp();
|
||||||
virtual void OpenAbout();
|
virtual void OpenAbout();
|
||||||
|
|
||||||
|
virtual void SetupMetrics();
|
||||||
|
virtual void UpdateMetrics();
|
||||||
|
|
||||||
AzQtComponents::FancyDocking* m_advancedDockManager = {};
|
AzQtComponents::FancyDocking* m_advancedDockManager = {};
|
||||||
|
|
||||||
QLabel* m_statusMessage = {};
|
QLabel* m_statusMessage = {};
|
||||||
|
QLabel* m_statusBarFps = {};
|
||||||
|
QLabel* m_statusBarCpuTime = {};
|
||||||
|
QLabel* m_statusBarGpuTime = {};
|
||||||
|
QTimer m_metricsTimer;
|
||||||
|
|
||||||
QMenu* m_menuFile = {};
|
QMenu* m_menuFile = {};
|
||||||
QMenu* m_menuEdit = {};
|
QMenu* m_menuEdit = {};
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <AtomToolsFramework/PerformanceMonitor/PerformanceMonitorRequestBus.h>
|
||||||
#include <AtomToolsFramework/Window/AtomToolsMainWindow.h>
|
#include <AtomToolsFramework/Window/AtomToolsMainWindow.h>
|
||||||
#include <AzToolsFramework/API/EditorPythonRunnerRequestsBus.h>
|
#include <AzToolsFramework/API/EditorPythonRunnerRequestsBus.h>
|
||||||
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
#include <AzToolsFramework/PythonTerminal/ScriptTermDialog.h>
|
||||||
@@ -46,11 +47,15 @@ namespace AtomToolsFramework
|
|||||||
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
AddDockWidget("Python Terminal", new AzToolsFramework::CScriptTermDialog, Qt::BottomDockWidgetArea, Qt::Horizontal);
|
||||||
SetDockWidgetVisible("Python Terminal", false);
|
SetDockWidgetVisible("Python Terminal", false);
|
||||||
|
|
||||||
|
SetupMetrics();
|
||||||
|
|
||||||
AtomToolsMainWindowRequestBus::Handler::BusConnect();
|
AtomToolsMainWindowRequestBus::Handler::BusConnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
AtomToolsMainWindow::~AtomToolsMainWindow()
|
AtomToolsMainWindow::~AtomToolsMainWindow()
|
||||||
{
|
{
|
||||||
|
AtomToolsFramework::PerformanceMonitorRequestBus::Broadcast(
|
||||||
|
&AtomToolsFramework::PerformanceMonitorRequestBus::Handler::SetProfilerEnabled, false);
|
||||||
AtomToolsMainWindowRequestBus::Handler::BusDisconnect();
|
AtomToolsMainWindowRequestBus::Handler::BusDisconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,4 +197,37 @@ namespace AtomToolsFramework
|
|||||||
void AtomToolsMainWindow::OpenAbout()
|
void AtomToolsMainWindow::OpenAbout()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AtomToolsMainWindow::SetupMetrics()
|
||||||
|
{
|
||||||
|
m_statusBarCpuTime = new QLabel(this);
|
||||||
|
statusBar()->addPermanentWidget(m_statusBarCpuTime);
|
||||||
|
m_statusBarGpuTime = new QLabel(this);
|
||||||
|
statusBar()->addPermanentWidget(m_statusBarGpuTime);
|
||||||
|
m_statusBarFps = new QLabel(this);
|
||||||
|
statusBar()->addPermanentWidget(m_statusBarFps);
|
||||||
|
|
||||||
|
static constexpr int UpdateIntervalMs = 1000;
|
||||||
|
m_metricsTimer.setInterval(UpdateIntervalMs);
|
||||||
|
m_metricsTimer.start();
|
||||||
|
connect(&m_metricsTimer, &QTimer::timeout, this, &AtomToolsMainWindow::UpdateMetrics);
|
||||||
|
|
||||||
|
AtomToolsFramework::PerformanceMonitorRequestBus::Broadcast(
|
||||||
|
&AtomToolsFramework::PerformanceMonitorRequestBus::Handler::SetProfilerEnabled, true);
|
||||||
|
|
||||||
|
UpdateMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AtomToolsMainWindow::UpdateMetrics()
|
||||||
|
{
|
||||||
|
AtomToolsFramework::PerformanceMetrics metrics = {};
|
||||||
|
AtomToolsFramework::PerformanceMonitorRequestBus::BroadcastResult(
|
||||||
|
metrics, &AtomToolsFramework::PerformanceMonitorRequestBus::Handler::GetMetrics);
|
||||||
|
|
||||||
|
m_statusBarCpuTime->setText(tr("CPU Time %1 ms").arg(QString::number(metrics.m_cpuFrameTimeMs, 'f', 2)));
|
||||||
|
m_statusBarGpuTime->setText(tr("GPU Time %1 ms").arg(QString::number(metrics.m_gpuFrameTimeMs, 'f', 2)));
|
||||||
|
int frameRate = metrics.m_cpuFrameTimeMs > 0 ? aznumeric_cast<int>(1000 / metrics.m_cpuFrameTimeMs) : 0;
|
||||||
|
m_statusBarFps->setText(tr("FPS %1").arg(QString::number(frameRate)));
|
||||||
|
}
|
||||||
} // namespace AtomToolsFramework
|
} // namespace AtomToolsFramework
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
#include <Atom/RPI.Edit/Material/MaterialSourceData.h>
|
||||||
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
#include <Atom/RPI.Edit/Material/MaterialTypeSourceData.h>
|
||||||
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
#include <AtomToolsFramework/Document/AtomToolsDocumentSystemRequestBus.h>
|
||||||
#include <AtomToolsFramework/PerformanceMonitor/PerformanceMonitorRequestBus.h>
|
|
||||||
#include <AtomToolsFramework/Util/Util.h>
|
#include <AtomToolsFramework/Util/Util.h>
|
||||||
#include <AzQtComponents/Components/StyleManager.h>
|
#include <AzQtComponents/Components/StyleManager.h>
|
||||||
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
#include <AzQtComponents/Components/WindowDecorationWrapper.h>
|
||||||
@@ -112,14 +111,6 @@ namespace MaterialEditor
|
|||||||
}
|
}
|
||||||
|
|
||||||
OnDocumentOpened(AZ::Uuid::CreateNull());
|
OnDocumentOpened(AZ::Uuid::CreateNull());
|
||||||
|
|
||||||
SetupMetrics();
|
|
||||||
}
|
|
||||||
|
|
||||||
MaterialEditorWindow::~MaterialEditorWindow()
|
|
||||||
{
|
|
||||||
AtomToolsFramework::PerformanceMonitorRequestBus::Broadcast(
|
|
||||||
&AtomToolsFramework::PerformanceMonitorRequestBus::Handler::SetProfilerEnabled, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaterialEditorWindow::ResizeViewportRenderTarget(uint32_t width, uint32_t height)
|
void MaterialEditorWindow::ResizeViewportRenderTarget(uint32_t width, uint32_t height)
|
||||||
@@ -213,38 +204,6 @@ namespace MaterialEditor
|
|||||||
|
|
||||||
Base::closeEvent(closeEvent);
|
Base::closeEvent(closeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MaterialEditorWindow::SetupMetrics()
|
|
||||||
{
|
|
||||||
m_statusBarCpuTime = new QLabel(this);
|
|
||||||
statusBar()->addPermanentWidget(m_statusBarCpuTime);
|
|
||||||
m_statusBarGpuTime = new QLabel(this);
|
|
||||||
statusBar()->addPermanentWidget(m_statusBarGpuTime);
|
|
||||||
m_statusBarFps = new QLabel(this);
|
|
||||||
statusBar()->addPermanentWidget(m_statusBarFps);
|
|
||||||
|
|
||||||
static constexpr int UpdateIntervalMs = 1000;
|
|
||||||
m_metricsTimer.setInterval(UpdateIntervalMs);
|
|
||||||
m_metricsTimer.start();
|
|
||||||
connect(&m_metricsTimer, &QTimer::timeout, this, &MaterialEditorWindow::UpdateMetrics);
|
|
||||||
|
|
||||||
AtomToolsFramework::PerformanceMonitorRequestBus::Broadcast(
|
|
||||||
&AtomToolsFramework::PerformanceMonitorRequestBus::Handler::SetProfilerEnabled, true);
|
|
||||||
|
|
||||||
UpdateMetrics();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MaterialEditorWindow::UpdateMetrics()
|
|
||||||
{
|
|
||||||
AtomToolsFramework::PerformanceMetrics metrics = {};
|
|
||||||
AtomToolsFramework::PerformanceMonitorRequestBus::BroadcastResult(
|
|
||||||
metrics, &AtomToolsFramework::PerformanceMonitorRequestBus::Handler::GetMetrics);
|
|
||||||
|
|
||||||
m_statusBarCpuTime->setText(tr("CPU Time %1 ms").arg(QString::number(metrics.m_cpuFrameTimeMs, 'f', 2)));
|
|
||||||
m_statusBarGpuTime->setText(tr("GPU Time %1 ms").arg(QString::number(metrics.m_gpuFrameTimeMs, 'f', 2)));
|
|
||||||
int frameRate = metrics.m_cpuFrameTimeMs > 0 ? aznumeric_cast<int>(1000 / metrics.m_cpuFrameTimeMs) : 0;
|
|
||||||
m_statusBarFps->setText(tr("FPS %1").arg(QString::number(frameRate)));
|
|
||||||
}
|
|
||||||
} // namespace MaterialEditor
|
} // namespace MaterialEditor
|
||||||
|
|
||||||
#include <Window/moc_MaterialEditorWindow.cpp>
|
#include <Window/moc_MaterialEditorWindow.cpp>
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT
|
||||||
#include <Viewport/MaterialViewportWidget.h>
|
#include <Viewport/MaterialViewportWidget.h>
|
||||||
#include <Window/ToolBar/MaterialEditorToolBar.h>
|
#include <Window/ToolBar/MaterialEditorToolBar.h>
|
||||||
#include <QTimer>
|
|
||||||
AZ_POP_DISABLE_WARNING
|
AZ_POP_DISABLE_WARNING
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -34,7 +33,6 @@ namespace MaterialEditor
|
|||||||
using Base = AtomToolsFramework::AtomToolsDocumentMainWindow;
|
using Base = AtomToolsFramework::AtomToolsDocumentMainWindow;
|
||||||
|
|
||||||
MaterialEditorWindow(QWidget* parent = 0);
|
MaterialEditorWindow(QWidget* parent = 0);
|
||||||
~MaterialEditorWindow();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void ResizeViewportRenderTarget(uint32_t width, uint32_t height) override;
|
void ResizeViewportRenderTarget(uint32_t width, uint32_t height) override;
|
||||||
@@ -49,14 +47,7 @@ namespace MaterialEditor
|
|||||||
|
|
||||||
void closeEvent(QCloseEvent* closeEvent) override;
|
void closeEvent(QCloseEvent* closeEvent) override;
|
||||||
|
|
||||||
void SetupMetrics();
|
|
||||||
void UpdateMetrics();
|
|
||||||
|
|
||||||
MaterialViewportWidget* m_materialViewport = {};
|
MaterialViewportWidget* m_materialViewport = {};
|
||||||
MaterialEditorToolBar* m_toolBar = {};
|
MaterialEditorToolBar* m_toolBar = {};
|
||||||
QLabel* m_statusBarFps = {};
|
|
||||||
QLabel* m_statusBarCpuTime = {};
|
|
||||||
QLabel* m_statusBarGpuTime = {};
|
|
||||||
QTimer m_metricsTimer;
|
|
||||||
};
|
};
|
||||||
} // namespace MaterialEditor
|
} // namespace MaterialEditor
|
||||||
|
|||||||
Reference in New Issue
Block a user