sine fixes to AP model handling, still getting some sporadic asserts in debug
This commit is contained in:
@@ -63,8 +63,7 @@ namespace AssetProcessor
|
||||
}
|
||||
|
||||
|
||||
auto fullPath = AZ::IO::Path(scanFolder.m_scanFolder) / source.m_sourceName;
|
||||
|
||||
AZ::IO::Path fullPath = AZ::IO::Path(scanFolder.m_scanFolder, AZ::IO::PosixPathSeparator) / source.m_sourceName;
|
||||
|
||||
// It's common for Open 3D Engine game projects and scan folders to be in a subfolder
|
||||
// of the engine install. To improve readability of the source files, strip out
|
||||
@@ -78,34 +77,35 @@ namespace AssetProcessor
|
||||
AzFramework::StringFunc::Replace(fullPath.Native(), m_assetRoot.absolutePath().toUtf8(), "");
|
||||
}
|
||||
|
||||
|
||||
AZStd::vector<AZStd::string> tokens;
|
||||
AzFramework::StringFunc::Tokenize(fullPath.c_str(), tokens, AZ_CORRECT_DATABASE_SEPARATOR, false, true);
|
||||
|
||||
if (tokens.empty())
|
||||
if (fullPath.empty())
|
||||
{
|
||||
AZ_Warning("AssetProcessor", false, "Source id %s has an invalid name: %s",
|
||||
source.m_sourceGuid.ToString<AZStd::string>().c_str(), source.m_sourceName.c_str());
|
||||
AZ_Warning(
|
||||
"AssetProcessor", false, "Source id %s has an invalid name: %s", source.m_sourceGuid.ToString<AZStd::string>().c_str(),
|
||||
source.m_sourceName.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
QModelIndex newIndicesStart;
|
||||
|
||||
AssetTreeItem* parentItem = m_root.get();
|
||||
AZStd::string fullFolderName;
|
||||
for (int i = 0; i < tokens.size() - 1; ++i)
|
||||
AZ::IO::Path currentFullFolderPath;
|
||||
const AZ::IO::PathView filename = fullPath.Filename();
|
||||
const AZ::IO::PathView fullPathWithoutFilename = fullPath.RemoveFilename();
|
||||
AZStd::fixed_string<AZ::IO::MaxPathLength> currentPath;
|
||||
for (auto pathIt = fullPathWithoutFilename.begin(); pathIt != fullPathWithoutFilename.end(); ++pathIt)
|
||||
{
|
||||
AzFramework::StringFunc::AssetDatabasePath::Join(fullFolderName.c_str(), tokens[i].c_str(), fullFolderName);
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(tokens[i].c_str());
|
||||
currentPath = pathIt->FixedMaxPathString();
|
||||
currentFullFolderPath /= currentPath;
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(currentPath.c_str());
|
||||
if (!nextParent)
|
||||
{
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
nextParent = parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(nullptr, nullptr, fullFolderName, tokens[i].c_str(), true));
|
||||
m_sourceToTreeItem[fullFolderName] = nextParent;
|
||||
nextParent = parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(nullptr, nullptr, currentFullFolderPath.Native(), currentPath.c_str(), true));
|
||||
m_sourceToTreeItem[currentFullFolderPath.Native()] = nextParent;
|
||||
// Folders don't have source IDs, don't add to m_sourceIdToTreeItem
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
@@ -117,12 +117,12 @@ namespace AssetProcessor
|
||||
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
|
||||
m_sourceToTreeItem[source.m_sourceName] =
|
||||
parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(&source, &scanFolder, source.m_sourceName, tokens[tokens.size() - 1].c_str(), false));
|
||||
parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(&source, &scanFolder, source.m_sourceName, AZStd::fixed_string<AZ::IO::MaxPathLength>(filename.Native()).c_str(), false));
|
||||
m_sourceIdToTreeItem[source.m_sourceID] = m_sourceToTreeItem[source.m_sourceName];
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user