First Performance pass

Signed-off-by: igarri <igarri@amazon.com>
This commit is contained in:
igarri
2021-06-16 11:48:59 +01:00
parent 9f61ed426c
commit 5d6ab2699c
11 changed files with 96 additions and 27 deletions
@@ -185,6 +185,7 @@ namespace AzToolsFramework
}
}
invalidateFilter();
Q_EMIT filterChanged();
}
@@ -204,6 +205,6 @@ namespace AzToolsFramework
}
} // namespace AssetBrowser
} // namespace AzToolsFramework// namespace AssetBrowser
} // namespace AzToolsFramework
#include "AssetBrowser/moc_AssetBrowserFilterModel.cpp"
@@ -133,7 +133,8 @@ namespace AzToolsFramework
{
return 0;
}
//If the column of the parent is one of those we don't want any more rows as children
if (parent.isValid())
{
if ((parent.column() != aznumeric_cast<int>(AssetBrowserEntry::Column::DisplayName)) &&
@@ -14,6 +14,7 @@ namespace AzToolsFramework
{
AssetBrowserTableModel::AssetBrowserTableModel(QObject* parent /* = nullptr */)
: QSortFilterProxyModel(parent)
, m_numberOfItemsDisplayed(200)
{
setDynamicSortFilter(false);
}
@@ -88,25 +89,40 @@ namespace AzToolsFramework
int AssetBrowserTableModel::BuildTableModelMap(
const QAbstractItemModel* model, const QModelIndex& parent /*= QModelIndex()*/, int row /*= 0*/)
{
static int cont = 0;
int rows = model ? model->rowCount(parent) : 0;
if (parent == QModelIndex())
{
cont = 0;
}
for (int i = 0; i < rows; ++i)
{
QModelIndex index = model->index(i, 0, parent);
AssetBrowserEntry* entry = GetAssetEntry(m_filterModel->mapToSource(index));
//We only wanna see the source assets.
if (entry->GetEntryType() == AssetBrowserEntry::AssetEntryType::Source)
if (cont < m_numberOfItemsDisplayed)
{
beginInsertRows(parent, row, row);
m_indexMap[row] = index;
endInsertRows();
QModelIndex index = model->index(i, 0, parent);
AssetBrowserEntry* entry = GetAssetEntry(m_filterModel->mapToSource(index));
// We only wanna see the source assets.
if (entry->GetEntryType() == AssetBrowserEntry::AssetEntryType::Source)
{
beginInsertRows(parent, row, row);
m_indexMap[row] = index;
endInsertRows();
Q_EMIT dataChanged(index, index);
++row;
Q_EMIT dataChanged(index, index);
++row;
++cont;
}
if (model->hasChildren(index) && cont < 10)
{
row = BuildTableModelMap(model, index, row);
}
}
if (model->hasChildren(index))
else
{
row = BuildTableModelMap(model, index, row);
break;
}
}
return row;
@@ -134,6 +150,22 @@ namespace AzToolsFramework
m_indexMap.clear();
endRemoveRows();
}
AzToolsFramework::EditorSettingsAPIRequests::SettingOutcome outcome;
AzToolsFramework::EditorSettingsAPIBus::BroadcastResult(outcome, &AzToolsFramework::EditorSettingsAPIBus::Handler::GetValue,
"Settings|MaxDisplayedItemsNumInSearch");
//AzToolsFramework::EditorSettingsAPIBus::BroadcastResult(
// outcome, &AzToolsFramework::EditorSettingsAPIBus::Handler::GetValue,
// "Settings\ExperimentalFeatures|TotalIlluminationEnabled");
AZStd::any* outcomeValue = &outcome.GetValue<AZStd::any>();
//bool trr = false;
if (outcomeValue->is<int>() == true)
{
m_numberOfItemsDisplayed = AZStd::any_cast<int>(*outcomeValue);
//trr = AZStd::any_cast<bool>(outcomeValue);
}
BuildTableModelMap(sourceModel());
emit layoutChanged();
}
@@ -11,6 +11,7 @@
#include <QSortFilterProxyModel>
#include <QPointer>
#endif
#include <Editor/EditorSettingsAPIBus.h>
namespace AzToolsFramework
{
@@ -49,6 +50,7 @@ namespace AzToolsFramework
int BuildTableModelMap(const QAbstractItemModel* model, const QModelIndex& parent = QModelIndex(), int row = 0);
private:
int m_numberOfItemsDisplayed;
QPointer<AssetBrowserFilterModel> m_filterModel;
QMap<int, QModelIndex> m_indexMap;
};
@@ -5,18 +5,18 @@
*
*/
#include <API/EditorAssetSystemAPI.h>
//#include <API/EditorAssetSystemAPI.h>
#include <AzCore/std/containers/vector.h>
//#include <AzCore/std/containers/vector.h>
#include <AzFramework/StringFunc/StringFunc.h>
//#include <AzFramework/StringFunc/StringFunc.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserFilterModel.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserModel.h>
#include <AzToolsFramework/AssetBrowser/Entries/AssetBrowserEntryCache.h>
#include <AzToolsFramework/AssetBrowser/Entries/ProductAssetBrowserEntry.h>
#include <AzToolsFramework/AssetBrowser/Entries/SourceAssetBrowserEntry.h>
//#include <AzToolsFramework/AssetBrowser/Entries/AssetBrowserEntryCache.h>
//#include <AzToolsFramework/AssetBrowser/Entries/ProductAssetBrowserEntry.h>
//#include <AzToolsFramework/AssetBrowser/Entries/SourceAssetBrowserEntry.h>
#include <AzToolsFramework/AssetBrowser/Views/AssetBrowserTableView.h>
#include <AzToolsFramework/AssetBrowser/Views/EntryDelegate.h>
@@ -27,9 +27,9 @@ AZ_PUSH_DISABLE_WARNING(
#include <QCoreApplication>
#include <QHeaderView>
#include <QMenu>
#include <QMouseEvent>
#include <QPainter>
#include <QPen>
//#include <QMouseEvent>
//#include <QPainter>
//#include <QPen>
#include <QTimer>
AZ_POP_DISABLE_WARNING
namespace AzToolsFramework
@@ -8,7 +8,6 @@
#if !defined(Q_MOC_RUN)
#include <AzCore/Asset/AssetCommon.h>
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/std/containers/vector.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
#include <AzToolsFramework/AssetBrowser/AssetBrowserTableModel.h>
@@ -54,7 +53,6 @@ namespace AzToolsFramework
void OnAssetBrowserComponentReady() override;
//////////////////////////////////////////////////////////////////////////
Q_SIGNALS:
void selectionChangedSignal(const QItemSelection& selected, const QItemSelection& deselected);
void ClearStringFilter();
@@ -78,6 +78,8 @@ AzAssetBrowserWindow::AzAssetBrowserWindow(QWidget* parent)
m_ui->m_viewSwitcherCheckBox->setVisible(false);
m_ui->m_assetBrowserTableViewWidget->setVisible(false);
m_ui->m_searchWidget->SetFilterInputInterval(AZStd::chrono::milliseconds(350));
if (ed_useNewAssetBrowserTableView)
{
m_ui->m_viewSwitcherCheckBox->setVisible(true);
@@ -42,11 +42,17 @@ void CEditorPreferencesPage_Files::Reflect(AZ::SerializeContext& serialize)
->Field("MaxCount", &AutoBackup::m_maxCount)
->Field("RemindTime", &AutoBackup::m_remindTime);
serialize
.Class<AssetBrowserSearch>()
->Version(1)
->Field("Max number of items displayed", &AssetBrowserSearch::m_numOfItemsShown);
serialize.Class<CEditorPreferencesPage_Files>()
->Version(1)
->Field("Files", &CEditorPreferencesPage_Files::m_files)
->Field("Editors", &CEditorPreferencesPage_Files::m_editors)
->Field("AutoBackup", &CEditorPreferencesPage_Files::m_autoBackup);
->Field("AutoBackup", &CEditorPreferencesPage_Files::m_autoBackup)
->Field("Asset Browser Search", &CEditorPreferencesPage_Files::m_assetBrowserSearch);
AZ::EditContext* editContext = serialize.GetEditContext();
@@ -79,12 +85,19 @@ void CEditorPreferencesPage_Files::Reflect(AZ::SerializeContext& serialize)
->Attribute(AZ::Edit::Attributes::Max, 100)
->DataElement(AZ::Edit::UIHandlers::SpinBox, &AutoBackup::m_remindTime, "Remind Time", "Auto Remind Every (Minutes)");
editContext->Class<AssetBrowserSearch>("Asset Browser Search View", "Asset Browser Search View")
->DataElement(AZ::Edit::UIHandlers::SpinBox, &AssetBrowserSearch::m_numOfItemsShown, "Maximum number of displayed items",
"Maximum number of displayed items displayed in the Search View")
->Attribute(AZ::Edit::Attributes::Min, 200)
->Attribute(AZ::Edit::Attributes::Max, 1000);
editContext->Class<CEditorPreferencesPage_Files>("File Preferences", "Class for handling File Preferences")
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20))
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_files, "Files", "File Preferences")
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_editors, "External Editors", "External Editors")
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_autoBackup, "Auto Backup", "Auto Backup");
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_autoBackup, "Auto Backup", "Auto Backup")
->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_Files::m_assetBrowserSearch, "Asset Browser Search", "Asset Browser Search");
}
}
@@ -123,6 +136,8 @@ void CEditorPreferencesPage_Files::OnApply()
gSettings.autoBackupTime = m_autoBackup.m_timeInterval;
gSettings.autoBackupMaxCount = m_autoBackup.m_maxCount;
gSettings.autoRemindTime = m_autoBackup.m_remindTime;
gSettings.numberOfItemsShownInSearch = m_assetBrowserSearch.m_numOfItemsShown;
}
void CEditorPreferencesPage_Files::InitializeSettings()
@@ -147,4 +162,6 @@ void CEditorPreferencesPage_Files::InitializeSettings()
m_autoBackup.m_timeInterval = gSettings.autoBackupTime;
m_autoBackup.m_maxCount = gSettings.autoBackupMaxCount;
m_autoBackup.m_remindTime = gSettings.autoRemindTime;
m_assetBrowserSearch.m_numOfItemsShown = gSettings.numberOfItemsShownInSearch;
}
@@ -68,10 +68,17 @@ private:
int m_remindTime;
};
struct AssetBrowserSearch
{
AZ_TYPE_INFO(AssetBrowserSearch, "{9FBFCD24-9452-49DF-99F4-2711443CEAAE}")
int m_numOfItemsShown;
};
Files m_files;
ExternalEditors m_editors;
AutoBackup m_autoBackup;
AssetBrowserSearch m_assetBrowserSearch;
QIcon m_icon;
};
+2
View File
@@ -498,6 +498,7 @@ void SEditorSettings::Save()
SaveValue("Settings", "AutoBackupTime", autoBackupTime);
SaveValue("Settings", "AutoBackupMaxCount", autoBackupMaxCount);
SaveValue("Settings", "AutoRemindTime", autoRemindTime);
SaveValue("Settings", "MaxDisplayedItemsNumInSearch", numberOfItemsShownInSearch);
SaveValue("Settings", "CameraMoveSpeed", cameraMoveSpeed);
SaveValue("Settings", "CameraRotateSpeed", cameraRotateSpeed);
SaveValue("Settings", "StylusMode", stylusMode);
@@ -710,6 +711,7 @@ void SEditorSettings::Load()
LoadValue("Settings", "AutoBackupTime", autoBackupTime);
LoadValue("Settings", "AutoBackupMaxCount", autoBackupMaxCount);
LoadValue("Settings", "AutoRemindTime", autoRemindTime);
LoadValue("Settings", "MaxDisplayedItemsNumInSearch", numberOfItemsShownInSearch);
LoadValue("Settings", "CameraMoveSpeed", cameraMoveSpeed);
LoadValue("Settings", "CameraRotateSpeed", cameraRotateSpeed);
LoadValue("Settings", "StylusMode", stylusMode);
+7
View File
@@ -377,6 +377,13 @@ AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
int autoRemindTime;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Asset Browser Search View.
//////////////////////////////////////////////////////////////////////////
//! Current maximum number of items that can be displayed in the AssetBrowser Search View.
int numberOfItemsShownInSearch;
//////////////////////////////////////////////////////////////////////////
//! If true preview windows is displayed when browsing geometries.
bool bPreviewGeometryWindow;