make default names NOT the default name of a previously existing file

Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
monroegm-disable-blank-issue-2
chcurran 4 years ago
parent 737ed1b032
commit d9622e74ab

@ -1591,27 +1591,33 @@ namespace ScriptCanvasEditor
void MainWindow::OnFileNew()
{
static int scriptCanvasEditorDefaultNewNameCount = 0;
int scriptCanvasEditorDefaultNewNameCount = 0;
ScriptCanvasAssetDescription description;
AZStd::string newAssetName = AZStd::string::format(description.GetAssetNamePatternImpl(), ++scriptCanvasEditorDefaultNewNameCount);
AZStd::string assetPath;
AZStd::array<char, AZ::IO::MaxPathLength> assetRootArray;
if (!AZ::IO::FileIOBase::GetInstance()->ResolvePath(description.GetSuggestedSavePathImpl()
, assetRootArray.data(), assetRootArray.size()))
for (;;)
{
AZ_ErrorOnce("Script Canvas", false, "Unable to resolve @projectroot@ path");
}
ScriptCanvasAssetDescription description;
AZStd::string newAssetName = AZStd::string::format(description.GetAssetNamePatternImpl(), ++scriptCanvasEditorDefaultNewNameCount);
AZStd::array<char, AZ::IO::MaxPathLength> assetRootArray;
if (!AZ::IO::FileIOBase::GetInstance()->ResolvePath(description.GetSuggestedSavePathImpl()
, assetRootArray.data(), assetRootArray.size()))
{
AZ_ErrorOnce("Script Canvas", false, "Unable to resolve @projectroot@ path");
}
AZStd::string assetPath;
AzFramework::StringFunc::Path::Join(assetRootArray.data(), (newAssetName + description.GetExtensionImpl()).data(), assetPath);
AzFramework::StringFunc::Path::Join(assetRootArray.data(), (newAssetName + description.GetExtensionImpl()).data(), assetPath);
AZ::Data::AssetInfo assetInfo;
auto createOutcome = CreateScriptCanvasAsset(assetPath);
if (createOutcome)
{
if (!AssetHelpers::GetAssetInfo(assetPath, assetInfo))
{
break;
}
}
else
auto createOutcome = CreateScriptCanvasAsset(assetPath);
if (!createOutcome.IsSuccess())
{
AZ_Warning("Script Canvas", createOutcome, "%s", createOutcome.GetError().data());
}
@ -1869,7 +1875,6 @@ namespace ScriptCanvasEditor
return false;
}
void MainWindow::OnSaveCallBack(const VersionExplorer::FileSaveResult& result)
{
const bool saveSuccess = result.fileSaveError.empty();
@ -1881,8 +1886,28 @@ namespace ScriptCanvasEditor
{
// #sc_editor_asset find a tab with the same path name and close non focused old ones with the same name
// Update the editor with the new information about this asset.
const ScriptCanvasEditor::SourceHandle& fileAssetId = memoryAsset;
ScriptCanvasEditor::SourceHandle& fileAssetId = memoryAsset;
int currentTabIndex = m_tabBar->currentIndex();
AZ::Data::AssetId oldId = fileAssetId.Id();
AZ::Data::AssetInfo assetInfo;
assetInfo.m_assetId = fileAssetId.Id();
AZ_VerifyWarning("ScriptCanvas", AssetHelpers::GetAssetInfo(fileAssetId.Path(), assetInfo)
, "Failed to find asset info for source file just saved: %s", fileAssetId.Path().c_str());
const bool assetIdHasChanged = assetInfo.m_assetId.m_guid != fileAssetId.Id();
fileAssetId = SourceHandle(fileAssetId, assetInfo.m_assetId.m_guid, fileAssetId.Path());
// #sc_editor_asset
// check for saving a graph over another graph with an open tab
{
// find the saved tab by graph*
// find all tabs that match old path, and close them
// update the save tab index
// and the current index
}
// this path is questionable, this is a save request that is not the current graph
// We've saved as over a new graph, so we need to close the old one.
if (saveTabIndex != currentTabIndex)
{
@ -1906,52 +1931,47 @@ namespace ScriptCanvasEditor
}
AzFramework::StringFunc::Path::GetFileName(memoryAsset.Path().c_str(), tabName);
// Update the tab's assetId to the file asset Id (necessary when saving a new asset)
// #sc_editor_asset used to be configure tab...sets the name and file state
// m_tabBar->ConfigureTab(saveTabIndex, fileAssetId, tabName);
// GeneralAssetNotificationBus::Event(memoryAsset, &GeneralAssetNotifications::OnAssetVisualized);
//
// auto requestorIter = m_assetCreationRequests.find(fileAsset->GetId());
//
// if (requestorIter != m_assetCreationRequests.end())
// {
// auto editorComponents = AZ::EntityUtils::FindDerivedComponents<EditorScriptCanvasComponent>(requestorIter->second.first);
//
// if (editorComponents.empty())
// {
// auto firstRequestBus = EditorScriptCanvasComponentRequestBus::FindFirstHandler(requestorIter->second.first);
//
// if (firstRequestBus)
// {
// firstRequestBus->SetAssetId(fileAsset->GetId());
// }
// }
// else
// {
// for (auto editorComponent : editorComponents)
// {
// if (editorComponent->GetId() == requestorIter->second.second)
// {
// editorComponent->SetAssetId(fileAsset->GetId());
// break;
// }
// }
// }
//
// m_assetCreationRequests.erase(requestorIter);
// }
if (assetIdHasChanged)
{
auto entity = memoryAsset.Get()->GetEntity();
auto editorComponents = AZ::EntityUtils::FindDerivedComponents<EditorScriptCanvasComponent>(entity);
if (editorComponents.empty())
{
if (auto firstRequestBus = EditorScriptCanvasComponentRequestBus::FindFirstHandler(entity->GetId()))
{
firstRequestBus->SetAssetId(memoryAsset.Id());
}
}
else
{
for (auto editorComponent : editorComponents)
{
if (editorComponent->GetAssetId() == oldId)
{
editorComponent->SetAssetId(memoryAsset.Id());
break;
}
}
}
}
// Soft switch the asset id here. We'll do a double scene switch down below to actually switch the active assetid
m_activeGraph = fileAssetId;
if (tabName.at(tabName.size() - 1) == '*')
if (tabName.at(tabName.size() - 1) == '*' || tabName.at(tabName.size() - 1) == '^')
{
tabName = tabName.substr(0, tabName.size() - 2);
}
m_tabBar->UpdateFileState(fileAssetId, Tracker::ScriptCanvasFileState::UNMODIFIED);
auto tabData = m_tabBar->GetTabData(saveTabIndex);
tabData->m_fileState = Tracker::ScriptCanvasFileState::UNMODIFIED;
tabData->m_assetId = fileAssetId;
m_tabBar->SetTabData(*tabData, saveTabIndex);
m_tabBar->SetTabText(saveTabIndex, tabName.c_str());
}
else

Loading…
Cancel
Save