You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
This addresses UE-15574 - Save As... crashes the editor with a PackageNameToFilename failed to convert Fatal log message #codereview Richard.TalbotWatkin [CL 2554669 by Andrew Rodham in Main branch]
96 lines
4.9 KiB
C++
96 lines
4.9 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "UnrealEd.h"
|
|
#include "EditorDirectories.h"
|
|
|
|
FEditorDirectories& FEditorDirectories::Get()
|
|
{
|
|
static FEditorDirectories Directories;
|
|
return Directories;
|
|
}
|
|
|
|
|
|
void FEditorDirectories::LoadLastDirectories()
|
|
{
|
|
for( int32 CurDirectoryIndex = 0; CurDirectoryIndex < ARRAY_COUNT( LastDir ); ++CurDirectoryIndex )
|
|
{
|
|
LastDir[CurDirectoryIndex].Reset();
|
|
}
|
|
|
|
// NOTE: We append a "2" to the section name to enforce backwards compatibility. "Directories" is deprecated.
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("UNR"), LastDir[ELastDirectory::UNR], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("BRUSH"), LastDir[ELastDirectory::BRUSH], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("FBX"), LastDir[ELastDirectory::FBX], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("FBXAnim"), LastDir[ELastDirectory::FBX_ANIM], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("GenericImport"), LastDir[ELastDirectory::GENERIC_IMPORT], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("GenericExport"), LastDir[ELastDirectory::GENERIC_EXPORT], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("GenericOpen"), LastDir[ELastDirectory::GENERIC_OPEN], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("GenericSave"), LastDir[ELastDirectory::GENERIC_SAVE], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("MeshImportExport"), LastDir[ELastDirectory::MESH_IMPORT_EXPORT], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("WorldRoot"), LastDir[ELastDirectory::WORLD_ROOT], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("Level"), LastDir[ELastDirectory::LEVEL], GEditorPerProjectIni );
|
|
GConfig->GetString( TEXT("Directories2"), TEXT("Project"), LastDir[ELastDirectory::PROJECT], GEditorPerProjectIni );
|
|
|
|
// Set up some defaults if they're note defined in the ini
|
|
const FString DefaultDir = FPaths::GameContentDir();
|
|
for( int32 CurDirectoryIndex = 0; CurDirectoryIndex < ARRAY_COUNT( LastDir ); ++CurDirectoryIndex )
|
|
{
|
|
if (LastDir[ CurDirectoryIndex ].IsEmpty())
|
|
{
|
|
// Default all directories to the game content folder
|
|
if (CurDirectoryIndex == ELastDirectory::LEVEL)
|
|
{
|
|
const FString DefaultMapDir = FPaths::GameContentDir() / TEXT("Maps");
|
|
if( IFileManager::Get().DirectoryExists( *DefaultMapDir ) )
|
|
{
|
|
LastDir[CurDirectoryIndex] = DefaultMapDir;
|
|
continue;
|
|
}
|
|
}
|
|
else if (CurDirectoryIndex == ELastDirectory::PROJECT)
|
|
{
|
|
LastDir[CurDirectoryIndex] = FPaths::RootDir();
|
|
continue;
|
|
}
|
|
|
|
// Set to the default dir
|
|
LastDir[ CurDirectoryIndex ] = DefaultDir;
|
|
}
|
|
}
|
|
}
|
|
|
|
/** Writes the current "LastDir" array back out to the config files */
|
|
void FEditorDirectories::SaveLastDirectories()
|
|
{
|
|
// Save out default file directories
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("UNR"), *LastDir[ELastDirectory::UNR], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("BRUSH"), *LastDir[ELastDirectory::BRUSH], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("FBX"), *LastDir[ELastDirectory::FBX], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("FBXAnim"), *LastDir[ELastDirectory::FBX_ANIM], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("GenericImport"), *LastDir[ELastDirectory::GENERIC_IMPORT], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("GenericExport"), *LastDir[ELastDirectory::GENERIC_EXPORT], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("GenericOpen"), *LastDir[ELastDirectory::GENERIC_OPEN], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("GenericSave"), *LastDir[ELastDirectory::GENERIC_SAVE], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("MeshImportExport"), *LastDir[ELastDirectory::MESH_IMPORT_EXPORT], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("WorldRoot"), *LastDir[ELastDirectory::WORLD_ROOT], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("Level"), *LastDir[ELastDirectory::LEVEL], GEditorPerProjectIni );
|
|
GConfig->SetString( TEXT("Directories2"), TEXT("Project"), *LastDir[ELastDirectory::PROJECT], GEditorPerProjectIni );
|
|
}
|
|
|
|
FString FEditorDirectories::GetLastDirectory( const ELastDirectory::Type InLastDir ) const
|
|
{
|
|
if ( InLastDir >= 0 && InLastDir < ARRAY_COUNT( LastDir ) )
|
|
{
|
|
return LastDir[InLastDir];
|
|
}
|
|
return FPaths::GameContentDir();
|
|
}
|
|
|
|
void FEditorDirectories::SetLastDirectory( const ELastDirectory::Type InLastDir, const FString& InLastStr )
|
|
{
|
|
if ( InLastDir >= 0 && InLastDir < ARRAY_COUNT( LastDir ) )
|
|
{
|
|
LastDir[InLastDir] = InLastStr;
|
|
}
|
|
}
|