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();