FLinkerSave::FLinkerSave(UPackage* InParent, FArchive *InSaver, bool bForceByteSwapping, bool bInSaveUnversioned) : FLinker(ELinkerType::Save, InParent, TEXT("$$Memory$$")) , Saver(nullptr) { if (FPlatformProperties::HasEditorOnlyData()) { // Create file saver. Saver = InSaver; check(Saver); #if WITH_EDITOR ArDebugSerializationFlags = Saver->ArDebugSerializationFlags; #endif UPackage* Package = dynamic_cast<UPackage*>(LinkerRoot); // Set main summary info. Summary.Tag = PACKAGE_FILE_TAG; Summary.SetFileVersions(GPackageFileUE4Version, GPackageFileLicenseeUE4Version, bInSaveUnversioned); Summary.SavedByEngineVersion = FEngineVersion::Current(); Summary.CompatibleWithEngineVersion = FEngineVersion::CompatibleWith(); Summary.PackageFlags = Package ? (Package->GetPackageFlags() & ~PKG_NewlyCreated) : 0; if (Package) { Summary.FolderName = Package->GetFolderName().ToString(); Summary.ChunkIDs = Package->GetChunkIDs(); } // Set status info. ArIsSaving = 1; ArIsPersistent = 1; ArForceByteSwapping = bForceByteSwapping; #if USE_STABLE_LOCALIZATION_KEYS if (GIsEditor) { SetLocalizationNamespace(TextNamespaceUtil::GetPackageNamespace(LinkerRoot)); } #endif // USE_STABLE_LOCALIZATION_KEYS } }
FLinkerSave::FLinkerSave(UPackage* InParent, const TCHAR* InFilename, bool bForceByteSwapping, bool bInSaveUnversioned) : FLinker(ELinkerType::Save, InParent, InFilename ) , Saver(nullptr) { if (FPlatformProperties::HasEditorOnlyData()) { // Create file saver. Saver = IFileManager::Get().CreateFileWriter( InFilename, 0 ); if( !Saver ) { UE_LOG(LogLinker, Fatal, TEXT("%s"), *FString::Printf( TEXT("Error opening file '%s'."), InFilename ) ); } UPackage* Package = dynamic_cast<UPackage*>(LinkerRoot); // Set main summary info. Summary.Tag = PACKAGE_FILE_TAG; Summary.SetFileVersions( GPackageFileUE4Version, GPackageFileLicenseeUE4Version, bInSaveUnversioned ); Summary.SavedByEngineVersion = FEngineVersion::Current(); Summary.CompatibleWithEngineVersion = FEngineVersion::CompatibleWith(); Summary.PackageFlags = Package ? (Package->GetPackageFlags() & ~PKG_NewlyCreated) : 0; if (Package) { Summary.FolderName = Package->GetFolderName().ToString(); Summary.ChunkIDs = Package->GetChunkIDs(); } // Set status info. ArIsSaving = 1; ArIsPersistent = 1; ArForceByteSwapping = bForceByteSwapping; #if USE_STABLE_LOCALIZATION_KEYS if (GIsEditor) { SetLocalizationNamespace(TextNamespaceUtil::GetPackageNamespace(LinkerRoot)); } #endif // USE_STABLE_LOCALIZATION_KEYS } }